我试图为一个多人掷骰子游戏做一个代码,用户可以输入多少玩家。 我希望代码重复,直到一个球员达到100分,并在所有球员之间循环。在
我试过各种各样的函数/模块,问过同龄人和一些老师,在网上搜索这个和所有的堆栈溢出,但没有找到答案。在
playerPoints = {}
toRoll = ""
minPlayers = 2
maxPlayers = 4
winner = 100
double1 = 25
def players(numberOfPlayers):
numberOfPlayers = 0
while numberOfPlayers not in (str(i) for i in range (minPlayers,maxPlayers)):
numberOfPlayers = int(numberOfPlayers)
for i in range(numberOfPlayers):
playerPoints["score{}".format(i+1)] = 0
return numberOfPlayers
def diceroll():
die1 = randint(1,6)
die2 = randint(1,6)
return die1, die2
roll = 0
while roll not in (str(i) for i in toRoll):
roll = input("Press enter to roll both dice")
if roll == toRoll:
print(str(die1) + " and " + str(die2))
break
我希望代码继续,但是我在这里卡住了,代码只询问有多少玩家,然后中断。
我通过执行以下操作调用函数:
^{pr2}$
可能解决您的问题
代码中有各种各样的}:
return
语句,这使得某些代码无法执行。就像在diceroll
函数中,返回die1
和{该行后面的代码永远不会执行,因为函数返回一些值。在
你说你是这样执行函数的:
^{pr2}$但是,
diceroll
函数接受零参数,而您给它两个(die1
和die2
),这就行不通了。另外,我在代码中没有看到roll
函数,因此也会给您一个错误。在我会怎么做的
所以,我知道StackOverflow不是我们为您编写代码的地方。但是因为你的代码里有各种各样的东西,我觉得很奇怪。我重新编写了代码,就像我本应该这样做的:
现在,首先,我删除了
players
函数中的一些限制(并将名称改为setPlayers
)。您的代码没有检查输入是否为数字,这可能会导致错误。我还取消了对4个玩家的限制,因为代码对每个数量都有效(当然如果是2个或更高)。在diceroll
函数现在接受将掷骰子的玩家以及将掷骰子的数量作为参数。在我还添加了
checkWin
函数来检查玩家是否获胜。它以最高分数作为参数。在现在这可能不是最快的代码,但是我认为这是可以理解的。如果你对此有任何疑问,请随时提出。在
相关问题 更多 >
编程相关推荐