如何在Python中创建一个多机器人锦标赛风格的石头剪刀布游戏



我是一个初学者Python程序员,我的教授布置了这个有趣的具有挑战性的作业…

作业是设计一个只能由电脑玩的剪刀、石头、布游戏。用户必须在开始时输入一个数字来表示游戏中有多少机器人,从那里开始,游戏将以支架锦标赛的方式运行,直到出现一个赢家。我在这个问题上坐了很长一段时间,我真的不知道从哪里开始。我不只是想要答案,我只是需要在正确的方向上一点点推动,哈哈。我编写了基本代码,要求玩家输入并检查它是否是一个数字,然后将其分配给一个变量。真的,我只是不确定如何创建一个"播放器"。对于x金额,并将它们放入括号式锦标赛中,然后让它们相互对抗(这几乎是所有的哈哈)

首先,"是一个用于不可数事物的短语,比如牛奶或火。对于可数的东西,比如球员或懒惰的大学生,你可以用"number of";相反。

创建播放器;

  1. 创建create_player(player_name)函数
  2. 在运行x次的for循环中调用该函数

将它们放到括号样式的tournament中

  1. 探讨二进制堆的数组表示
  2. 你可以让最低的叶子互相对抗,直到树只剩下它的根。

"然后将它们相互比较">

  1. 创建一个player_wins(player_1, player_2)函数
  2. 继续调用该函数,直到其中一个获胜

由于它是括号锦标赛样式,您应该首先检查用户输入的数字是否是2的幂。可以使用以下代码:

n = int(input("Please enter the number of players: "))
while (n & (n-1) != 0) or n == 0:
print("The number of players is not valid to play a brackets style tornurament!nValue must be power of 2.n")
n = int(input("Please enter the number of players: "))

你可以在这里了解更多关于它是如何工作的。请注意,它还检查玩家数量是否为负数。

你可以使用一个随机函数来模拟剪刀石头布游戏。下面的函数模拟一个游戏:

import random
def rock_paper_scissors_game():
actions = ["paper", "rock", "scissors"]
p1_choice = random.choice(actions)
p2_choice = random.choice(actions)
if p1_choice == p2_choice:
print(f"Both players selected {p1_choice}. It's a tie!")
elif p1_choice == "rock":
if p2_choice == "scissors":
print("Rock smashes scissors! Player 1 wins!")
else:
print("Paper covers rock! Player 2 wins!")
elif p1_choice == "paper":
if p2_choice == "rock":
print("Paper covers rock! Player 1 wins!")
else:
print("Scissors cuts paper! Player 2 wins!")
elif p1_choice == "scissors":
if p2_choice == "paper":
print("Scissors cuts paper! Player 1 wins!")
else:
print("Rock smashes scissors! Player 2 wins!")

你可以在每次比赛时调用这个函数并模拟比赛。

我将首先创建一个具有自动播放器所需的所有方法/逻辑的播放器类。接下来创建一个游戏方法,该方法使用两个玩家类并决定获胜者。最后实例化一个长度为N的玩家对象数组/列表,并将其输入game方法。