練習 - 使用新增的規則擴充遊戲實作
您公司對「剪刀、石頭、布」物件導向程式設計 (OOP) 實作相當滿意。 因此他們希望您將遊戲變更為剪刀、石頭、布、蜥蜴、史巴克,因為現今新潮的孩子都會這樣玩。
新增「蜥蜴」和「史巴克」選項
新增兩個「蜥蜴」和「史巴克」這樣的選項聽起來要變更許多內容。 但多虧您執行規則的方式,所需的變更其實微乎其微。
「蜥蜴」和「史巴克」的規則是什麼?
剪刀斬首蜥蜴、剪刀切斷布、布包住石頭、石頭砸死蜥蜴、蜥蜴毒死史巴克、史巴克踩碎剪刀、剪刀斬首蜥蜴、蜥蜴吃掉布、布證明史巴克不存在、史巴克融化石頭、以及一如往常地,石頭壓碎剪刀。
上述描述可以轉譯成這個更新的規則資料表:
選擇 | 石頭 | 布 | 剪刀 | 蜥蜴 | 史巴克 |
---|---|---|---|---|---|
石頭 | 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 |
找出
Participant
類別,然後更新方法toNumericalChoice()
,使其看起來像這樣:def toNumericalChoice(self): switcher = { "rock": 0, "paper": 1, "scissor": 2, "lizard": 3, "spock": 4 } return switcher[self.choice]
找出
GameRound
類別。 在方法__init__()
中,將self.rules
變數變更為此程式碼: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] ]
找出
Participant
類別。 更新方法choose
以便納入新選項: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))
儲存檔案,然後執行
python3 rock-paper-scissor.py
以試驗您所作的變更:python3 rock-paper-scissor.py
選取
spock
和paper
,以查看規則是否正常運作。 您的輸出訊息看起來應類似下列範例: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
恭喜! 您已將蜥蜴和史巴克這兩個選項新增至遊戲中,而且沒有在程式碼上花費多少力氣。