面向对象人机猜拳代码python
时间: 2023-07-02 07:07:13 浏览: 64
以下是一个简单的面向对象人机猜拳代码Python:
```python
import random
class Player:
def __init__(self, name):
self.name = name
self.score = 0
def choose_gesture(self):
pass
class HumanPlayer(Player):
def choose_gesture(self):
valid = False
while not valid:
gesture = input("Choose your gesture (rock/paper/scissors): ").lower()
if gesture in ("rock", "paper", "scissors"):
valid = True
return gesture
class ComputerPlayer(Player):
def choose_gesture(self):
return random.choice(("rock", "paper", "scissors"))
class Game:
def __init__(self, rounds):
self.rounds = rounds
self.players = [HumanPlayer("Player 1"), ComputerPlayer("Player 2")]
def play_round(self):
gestures = [player.choose_gesture() for player in self.players]
print(f"{self.players[0].name} chooses {gestures[0]}, {self.players[1].name} chooses {gestures[1]}")
if gestures[0] == gestures[1]:
print("It's a tie!")
elif gestures[0] == "rock" and gestures[1] == "scissors" or \
gestures[0] == "paper" and gestures[1] == "rock" or \
gestures[0] == "scissors" and gestures[1] == "paper":
print(f"{self.players[0].name} wins this round!")
self.players[0].score += 1
else:
print(f"{self.players[1].name} wins this round!")
self.players[1].score += 1
def play_game(self):
print(f"Let's play {self.rounds} rounds!")
for i in range(self.rounds):
print(f"Round {i+1}:")
self.play_round()
if self.players[0].score == self.players[1].score:
print("It's a tie!")
elif self.players[0].score > self.players[1].score:
print(f"{self.players[0].name} wins the game!")
else:
print(f"{self.players[1].name} wins the game!")
game = Game(3)
game.play_game()
```
在这个程序中,我们定义了三个类:`Player`、`HumanPlayer`和`ComputerPlayer`。`Player`是一个基类,定义了每个玩家都应该有的属性和方法。`HumanPlayer`和`ComputerPlayer`继承自`Player`,并实现了`choose_gesture()`方法,来选择出拳动作。
我们还定义了一个`Game`类,它有一个`play_round()`方法来进行一轮猜拳游戏,以及一个`play_game()`方法来进行整个游戏。在每一轮中,我们首先让每个玩家选择出拳动作,然后比较两个动作的胜负,最后更新得分。在整个游戏中,我们通过循环来进行多轮游戏,并在最后输出胜者。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)