Exercício – estender a implementação do jogo com regras adicionadas

Concluído

Sua empresa está satisfeita com a implementação da OOP (programação orientada a objeto) do jogo pedra, papel e tesoura. Sendo assim, querem que você mude o jogo para pedra, papel, tesoura, lagarto, Spock, porque é o que as crianças descoladas estão jogando hoje em dia.

Adicionar as escolhas lagarto e Spock

Pode parecer que adicionar mais duas escolhas como lagarto e Spock é muita coisa a ser mudada. Graças à maneira como você implementou as regras, as alterações que você precisa fazer são pontuais.

Quais são as regras para lagarto e Spock?

A tesoura decapita o lagarto, tesoura corta papel, papel embrulha a pedra, a pedra esmaga o lagarto, o lagarto envenena Spock, Spock destrói a tesoura, a tesoura decapita o lagarto, o lagarto come o papel, o papel refuta Spock, Spock vaporiza a pedra e, como sempre, a pedra esmaga a tesoura.

A descrição anterior pode ser convertida nesta tabela de regras atualizada:

Escolha Pedra Papel Tesoura Lagarto Spock
Pedra 0 -1 1 1 -1
Papel 1 0 -1 -1 1
Tesoura -1 1 0 1 -1
Lagarto -1 1 -1 0 1
Spock 1 -1 1 -1 0
  1. Localize a classe Participant e atualize o método toNumericalChoice() para ter a seguinte aparência:

        def toNumericalChoice(self):
            switcher = {
                 "rock": 0,
                 "paper": 1,
                 "scissor": 2,
                 "lizard": 3,
                 "spock": 4
            }
            return switcher[self.choice]
    
  2. Localize a classe GameRound. No método __init__(), altere a variável self.rules para 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. Localize a classe Participant. Atualize o método choose para incluir novas opções:

        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. Salve o arquivo e execute python3 rock-paper-scissor.py para experimentar as alterações:

    python3 rock-paper-scissor.py
    

    Selecione spock e paper para ver que as regras funcionam corretamente. Seu resultado deve ser semelhante ao seguinte exemplo:

    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
    

Parabéns! Você adicionou duas escolhas, lagarto e Spock, ao jogo com mínimo esforço para seu código.