Ejercicio: Ampliación de la implementación del juego con reglas agregadas

Completado

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
  1. Busque la clase Participant y actualice el método toNumericalChoice() 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]
    
  2. Busque la clase GameRound. En el método __init__(), cambie la variable self.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]
            ]
    
  3. Busque la clase Participant. Actualice el método choose 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))
    
  4. Guarde el archivo y, a continuación, ejecute python3 rock-paper-scissor.py para probar los cambios:

    python3 rock-paper-scissor.py
    

    Seleccione spock y paper 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.