python人机猜拳面向对象
时间: 2023-06-21 12:09:31 浏览: 139
python实现人机猜拳小游戏
下面是一个简单的 Python 人机猜拳游戏的面向对象实现:
```python
import random
class Player:
def __init__(self, name):
self.name = name
self.score = 0
self.choice = None
def choose(self):
self.choice = input(f"{self.name}, please choose rock/paper/scissors: ").lower()
while self.choice not in ["rock", "paper", "scissors"]:
self.choice = input(f"{self.name}, please choose rock/paper/scissors: ").lower()
def ai_choose(self):
self.choice = random.choice(["rock", "paper", "scissors"])
def __str__(self):
return f"{self.name}: {self.score}"
class Game:
def __init__(self):
self.player = Player("Player")
self.ai = Player("AI")
self.winning_combinations = [("rock", "scissors"), ("paper", "rock"), ("scissors", "paper")]
def welcome(self):
print("Welcome to Rock-Paper-Scissors game!\n")
def play(self):
self.player.choose()
self.ai.ai_choose()
print(f"\n{self.player.name} chose {self.player.choice}")
print(f"{self.ai.name} chose {self.ai.choice}\n")
if self.player.choice == self.ai.choice:
print("Draw!")
elif (self.player.choice, self.ai.choice) in self.winning_combinations:
print(f"{self.player.name} wins!")
self.player.score += 1
else:
print(f"{self.ai.name} wins!")
self.ai.score += 1
def result(self):
print("\nFinal score:")
print(self.player)
print(self.ai)
if self.player.score > self.ai.score:
print("\nCongratulations! You win!")
elif self.ai.score > self.player.score:
print("\nSorry, you lose!")
else:
print("\nDraw!")
if __name__ == "__main__":
game = Game()
game.welcome()
for i in range(3):
print(f"\nRound {i+1}:")
game.play()
game.result()
```
在这个实现中,我们定义了两个类:`Player` 和 `Game`。`Player` 类表示一个玩家,包括玩家的姓名、得分和选择的手势;`Game` 类表示整个游戏,包括两个玩家、获胜组合和游戏流程等。
在 `Player` 类中,我们定义了 `choose()` 方法和 `ai_choose()` 方法,分别表示人类玩家和 AI 玩家选择手势的行为。这里我们使用了 `input()` 函数来获取人类玩家的输入,使用了 `random.choice()` 函数来随机生成 AI 玩家的选择。
在 `Game` 类中,我们定义了 `welcome()` 方法、`play()` 方法和 `result()` 方法,分别表示欢迎界面、游戏流程和游戏结果。在 `play()` 方法中,我们比较了两个玩家的选择,根据获胜组合来判断胜负,并更新玩家的得分。
最后,在 `if __name__ == "__main__":` 中,我们创建了一个 `Game` 实例,并运行了游戏。每个游戏包括三轮,最后输出游戏结果。
阅读全文