Python 中的石头剪刀布游戏记分

78 阅读2分钟

我们正在编写一个简单的石头剪刀布游戏,想在游戏中记录玩家的得分,以便在每次对局后显示玩家的得分。我们希望能够显示类似这样的得分信息:

玩家 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()

这个代码示例中的注释已经足够详细,能够帮助你理解代码的含义和运行流程。