我们正在编写一个简单的石头剪刀布游戏,想在游戏中记录玩家的得分,以便在每次对局后显示玩家的得分。我们希望能够显示类似这样的得分信息:
玩家 1 = 1
玩家 2 = 0
我们还想知道如何让代码更高效,并希望得到一些关于代码优化的建议。
2. 解决方案
为了解决这个问题,我们可以使用面向对象编程来设计我们的游戏。首先,我们可以创建一个 Player 类,这个类将包含玩家的姓名和得分。然后,我们可以创建一个 Game 类,这个类将包含两个 Player 对象,以及用于进行游戏的方法。
下面是使用面向对象编程来编写石头剪刀布游戏的示例代码:
class Player:
def __init__(self, name):
self.name = name
self.score = 0
class Game:
def __init__(self, player1, player2):
self.player1 = player1
self.player2 = player2
def play_game(self):
# 获取玩家的选择
choice1 = self.get_player_attack(self.player1)
choice2 = self.get_player_attack(self.player2)
# 确定获胜者并更新得分
self.attack(choice1, choice2)
# 显示得分
self.display_scores()
def get_player_attack(self, player):
# 提示玩家选择
print(f"{player.name}, 请选择:")
print("1. 石头")
print("2. 剪刀")
print("3. 布")
# 读取玩家的选择
choice = input()
# 返回玩家的选择
return choice
def attack(self, choice1, choice2):
# 比较玩家的选择并确定获胜者
if choice1 == choice2:
print("平局")
elif choice1 == "1" and choice2 == "2":
print(f"{self.player2.name} 获胜")
self.player2.score += 1
elif choice1 == "1" and choice2 == "3":
print(f"{self.player1.name} 获胜")
self.player1.score += 1
elif choice1 == "2" and choice2 == "1":
print(f"{self.player1.name} 获胜")
self.player1.score += 1
elif choice1 == "2" and choice2 == "3":
print(f"{self.player2.name} 获胜")
self.player2.score += 1
elif choice1 == "3" and choice2 == "1":
print(f"{self.player2.name} 获胜")
self.player2.score += 1
elif choice1 == "3" and choice2 == "2":
print(f"{self.player1.name} 获胜")
self.player1.score += 1
def display_scores(self):
# 显示得分
print(f"{self.player1.name} = {self.player1.score}")
print(f"{self.player2.name} = {self.player2.score}")
# 创建两个玩家对象
player1 = Player("玩家 1")
player2 = Player("玩家 2")
# 创建一个游戏对象
game = Game(player1, player2)
# 开始游戏
game.play_game()
这个代码示例中的注释已经足够详细,能够帮助你理解代码的含义和运行流程。