Ćwiczenie — rozszerzanie implementacji gry o dodatkowe reguły
Firma jest zadowolona z Twojej implementacji gry w kamień, papier, nożyce z wykorzystaniem programowania obiektowego. Tak bardzo, że chcą, aby zmienić grę na rock, papier, nożyczki, jaszczurkę, Spock, ponieważ to właśnie wszystkie fajne dzieci grają w tych dniach.
Dodawanie opcji wyboru „jaszczurka” i „Spock”
Dodanie dwóch kolejnych opcji wyboru, takich jak jaszczurka i Spock, może się wydawać dużą zmianą. Dzięki zastosowaniu reguł zmiany, które są potrzebne, są drobne.
Jakie są zasady jaszczurki i Spock?
Nożyce tną papier, papier zakrywa kamień, kamień zgniata jaszczurkę, jaszczurka truje Spocka, Spock niszczy nożyce, nożyce ucinają głowę jaszczurce, jaszczurka zjada papier, papier przeczy istnieniu Spocka, Spock dezintegruje kamień i, tak jak zawsze, kamień rozbija nożyce.
Powyższy opis można przełożyć na tę zaktualizowaną tabelę reguł:
Wybór | Kamień | Papier | Nożyce | Jaszczurka | Spock |
---|---|---|---|---|---|
Kamień | 0 | -1 | 1 | 1 | -1 |
Papier | 1 | 0 | -1 | -1 | 1 |
Nożyce | -1 | 1 | 0 | 1 | -1 |
Jaszczurka | -1 | 1 | -1 | 0 | 1 |
Spock | 1 | -1 | 1 | -1 | 0 |
Znajdź klasę
Participant
i zaktualizuj metodętoNumericalChoice()
w następujący sposób:def toNumericalChoice(self): switcher = { "rock": 0, "paper": 1, "scissor": 2, "lizard": 3, "spock": 4 } return switcher[self.choice]
Znajdź klasę
GameRound
. W metodzie__init__()
zmień zmiennąself.rules
na następujący kod: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] ]
Znajdź klasę
Participant
. Zaktualizuj metodęchoose
, aby uwzględnić nowe opcje: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))
Zapisz plik, a następnie uruchom polecenie
python3 rock-paper-scissor.py
, aby wypróbować zmiany:python3 rock-paper-scissor.py
Wybierz opcje
spock
ipaper
, aby sprawdzić, czy reguły działają prawidłowo. Dane wyjściowe powinny wyglądać mniej więcej tak jak w tym przykładzie: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
Gratulacje! Dodano do gry dwie opcje wyboru, jaszczurkę i Spocka, przy minimalnym nakładzie pracy nad kodem.
Potrzebujesz pomocy? Zobacz nasz przewodnik po rozwiązywaniu problemów lub prześlij szczegółową opinię, zgłaszając problem.