Ejercicio: Ampliación de la implementación del juego con reglas agregadas
La empresa está muy satisfecha con la implementación de "Piedra, papel, tijeras" mediante la programación orientada a objetos (OOP). Y por ello quieren cambiar el juego a piedra, papel, tijeras, lagarto, Spock, ya que es a lo que la juventud juega en la actualidad.
Adición de las opciones lagarto y Spock
Es posible que parezca que hay mucho que cambiar para agregar dos opciones nuevas, como lagarto y Spock. Gracias a la manera en que se han implementado las reglas, los cambios necesarios son menores.
¿Pero cuáles son las reglas para lagarto y Spock?
Las tijeras decapitan al lagarto, las tijeras cortan el papel, el papel envuelve la piedra, la piedra aplasta al lagarto, el lagarto envenena a Spock, Spock destroza las tijeras, las tijeras decapitan al lagarto, el lagarto se come el papel, el papel desaprueba a Spock, Spock volatiliza la piedra y, como siempre, la piedra aplasta a las tijeras.
La descripción anterior se puede traducir en esta tabla de reglas actualizada:
Opción | Piedra | Documento | Tijeras | Lagarto | Spock |
---|---|---|---|---|---|
Piedra | 0 | -1 | 1 | 1 | -1 |
Documento | 1 | 0 | -1 | -1 | 1 |
Tijeras | -1 | 1 | 0 | 1 | -1 |
Lagarto | -1 | 1 | -1 | 0 | 1 |
Spock | 1 | -1 | 1 | -1 | 0 |
Busque la clase
Participant
y actualice el métodotoNumericalChoice()
para que tenga un aspecto similar a este:def toNumericalChoice(self): switcher = { "rock": 0, "paper": 1, "scissor": 2, "lizard": 3, "spock": 4 } return switcher[self.choice]
Busque la clase
GameRound
. En el método__init__()
, cambie la variableself.rules
por este código:self.rules = [ [0, -1, 1, 1, -1], [1, 0, -1, -1, 1], [-1, 1, 0, 1, -1], [-1, 1, -1, 0, 1], [1, -1, 1, -1, 0] ]
Busque la clase
Participant
. Actualice el métodochoose
para incluir las opciones nuevas:def choose(self): self.choice = input("{name}, select rock, paper, scissor, lizard or Spock: ".format(name= self.name)) print("{name} selects {choice}".format(name=self.name, choice = self.choice))
Guarde el archivo y, a continuación, ejecute
python3 rock-paper-scissor.py
para probar los cambios:python3 rock-paper-scissor.py
Seleccione
spock
ypaper
para ver que las reglas funcionan correctamente. La salida debería similar al siguiente ejemplo:Spock, select rock, paper, scissor, lizard or spock: spock Spock selects spock Kirk, select rock, paper, scissor, lizard or spock: paper Kirk selects paper Round resulted in a loss Continue game y/n: n Game ended, Spock has 0, and Kirk has 1 Winner is Kirk
¡Enhorabuena! Ha agregado dos opciones, lagarto y Spock, al juego con un esfuerzo mínimo en el código.