Exercício – estender a implementação do jogo com regras adicionadas
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 |
Localize a classe
Participant
e atualize o métodotoNumericalChoice()
para ter a seguinte aparência:def toNumericalChoice(self): switcher = { "rock": 0, "paper": 1, "scissor": 2, "lizard": 3, "spock": 4 } return switcher[self.choice]
Localize a classe
GameRound
. No método__init__()
, altere a variávelself.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] ]
Localize a classe
Participant
. Atualize o métodochoose
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))
Salve o arquivo e execute
python3 rock-paper-scissor.py
para experimentar as alterações:python3 rock-paper-scissor.py
Selecione
spock
epaper
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.