我用我想不到的方式制作了一个简单的Yahtzee游戏。当前,用户必须按Enter键(使用任何值)才能继续。我想使用循环语句,使骰子继续滚动直到Yahtzee(所有滚动的数字都相同)。我还要一个10秒的计时器。向此代码添加循环语句的最佳方法是什么?附言这不是功课,我想在Yahtzee晚上做这个游戏。我的女儿醒来后变得轻柔...哈哈
import random
while True:
dice1 = random.randint(1,6)
dice2 = random.randint(1,6)
dice3 = random.randint(1,6)
dice4 = random.randint(1,6)
dice5 = random.randint(1,6)
numbers = (dice1, dice2, dice3, dice4, dice5)
sum1 = sum(numbers)
if sum1 == ("5" or "10" or "15" or "20" or "25"):
print("Winner, winner, chicken dinner!", dice1, dice2, dice3, dice4, dice5)
else:
print("Your rolls are: ", dice1, dice2, dice3, dice4, dice5)
input("Press return key to roll again.")
编辑:这是我的最终产品。谢谢所有帮助!!
import random
import time
input("Press return key to roll.")
for x in range(0,10000):
numbers = [random.randint(1,6) for _ in range(5)]
if all(x == numbers[0] for x in numbers):
print("Winner, winner, chicken dinner!", numbers)
input("Press return key to play again.")
else:
print("Your rolls are: ", numbers)
print("Next roll in one second.")
time.sleep(1)
答案 0 :(得分:0)
将while True:...
替换为while boolean_variable: ...
,并将boolean_variable
的值设置为True
之前的while
,并设置为False
您在if
条件下达到了Yahtzee =>。
但是10秒计时器是什么意思? time.sleep(10)
内部while
循环的结尾可以实现10秒的睡眠时间。
编辑boolean_variable
示例
import time
...
not_yahtzee = True
while not_yathzee:
....
if sum == 5 or sum == 10 or ... :
...
not_yahtzee = False
else:
...
time.sleep(10)
...
代表您已经拥有的代码。如对您的问题的评论所述,if
条件应该更像这个条件。 There are other ways on how to check all the elements in a list are the same。
答案 1 :(得分:0)
如果您要检查所有骰子号是否相同,就这么简单。
allDice = [dice1, dice2, dice3, dice4, dice5] #List of dice variables
if all(x == allDice[0] for x in allDice): # If all dice are the same
print("Yahtzee")
break # Break out of while loop
拥有“计时器”的最简单方法是添加time.sleep()
。您必须import time
,否则它将无法正常工作。
所以更换
input("Press return key to roll again.")
与
time.sleep(10)
这意味着每10秒骰子就会滚动一次,直到所有骰子都是相同的数字为止,如果它们相同,它将打印Yahtzee并停止循环。