Ćwiczenie — rozszerzanie implementacji gry o dodatkowe reguły

Ukończone

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
  1. 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]
    
  2. 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]
            ]
    
  3. 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))
    
  4. Zapisz plik, a następnie uruchom polecenie python3 rock-paper-scissor.py , aby wypróbować zmiany:

    python3 rock-paper-scissor.py
    

    Wybierz opcje spock i paper, 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.