Python 骰子游戏循环中的间隔
我在写一个“中间骰子”游戏时遇到了一些问题。我之前发过一个问题,得到了回答,但我还是有点困惑。(请记住,我对编程非常新手)
这是我得到的输出,涉及到当两个骰子掷出相同数字时出现的“高或低”选项:
你想玩中间骰子游戏吗 [y|n]? y
骰子1: 1 骰子2: 1
筹码数量: 100 下注金额: 50
平局!
平局! 高还是低 [h|l]? h
骰子3: 9
* 你赢了! *
你现在有150个筹码! 再玩一次 y|n? y
骰子3: 9
* 抱歉 - 你输了! *
你现在有100个筹码! 再玩一次 [y|n]?
它不应该再次显示骰子3并说“你输了”,而是应该重新掷骰子1和骰子2(基本上是从头开始,但保留已经赢得或失去的筹码)。另外,如果玩家选择“n”,它也应该这样做。我希望如果玩家选择“n”,游戏就结束。
这是我的代码(我把两个骰子的数字都改成了“1”,以测试高低游戏):
import random
# Number of chips
chipBalance = 100
play = input('Would you like to play in-between [y|n]? ')
while play == 'y':
# First dice roll
die1 = 1
# Second dice roll
die2 = 1
# Swaps the values of the dice if die one is larger than die two
if die1 > die2:
temp = die1
die1 = die2
die2 = temp
# Displays value of the first and second die
print('\nDie 1:', die1, ' Die 2:', die2)
# Displays the number of chips held by player
print('\nNumber of chips:', chipBalance)
# Prompts player to place their bet
bet = int(input('Place your bet: '))
#Third dice roll
die3 = random.randint(1,12)
# Checks if the dice are the same or different
if die1 == die2:
print('\nEven-steven!')
guess = input('\nEven-steven! Higher or lower [h|l]? ')
print('\nDie 3:', die3)
if guess == 'h':
if die3 > die1:
print('\n*** You win! ***')
chipBalance = chipBalance + bet
elif die3 < die1:
print('\n*** Sorry - You lose! ***')
chipBalance = chipBalance - bet
elif die3 == die1:
print('\n*** You hit the post - You lose! ***')
chipBalance = chipBalance - bet
if guess == 'l':
if die3 > die1:
print('\n*** Sorry - You lose! ***')
chipBalance = chipBalance - bet
elif die3 < die1:
print('\n*** You win! ***')
chipBalance = chipBalance + bet
elif die3 == die1:
print('\n*** You hit the post - You lose! ***')
chipBalance = chipBalance - bet
# Displays when chip balance has reached zero
if chipBalance <= 0:
print('\nYou\'re all out of chips!\n\n*** GAME OVER ***')
else:
print('\nYou now have', chipBalance, 'chips!')
play = input('Play again y|n? ')
elif die1 != die2:
print('\nNot the same, let\'s play!')
# Value of the third die
print('\nDie 3:', die3)
# Results of dice roll
if die3 > die1 and die3 < die2:
print('\n*** You win! ***')
chipBalance = chipBalance + bet
elif die3 < die1 or die3 > die2:
print('\n*** Sorry - You lose! ***')
chipBalance = chipBalance - bet
elif die3 == die1 or die3 == die2:
print('\n*** You hit the post - You lose! ***')
chipBalance = chipBalance - bet
# Displays when chip balance has reached zero
if chipBalance <= 0:
print('\nYou\'re all out of chips!\n\n*** GAME OVER ***')
else:
print('\nYou now have', chipBalance, 'chips!')
# Update loop control
play = input('Play again [y|n]? ')
print('\nThanks for playing!')
任何关于我需要更改什么/该改成什么的帮助都将非常感激! 提前谢谢你。
3 个回答
1
在“平局”这个部分结束时,你会问玩家是否想再玩一次。但是,不管你是否进入了“平局”部分,也不管用户是否想再玩一次,你都会打印出“骰子3”的结果并进行处理。(也许在 elif die1 != die2
后面的代码应该放在这个 elif
里面?)
2
在这个代码块 if die1 == die2
里面,你有:
play = input('Play again y|n? ')
但是在这个阶段,用户输入什么其实并不重要。脚本会在代码块外继续执行,直到
# Value of the third die
print('\nDie 3:', die3)
1
你的缩进有问题:
play = input('Play again y|n? ') <-- This is the expected play again
elif die1 != die2:
print('\nNot the same, let\'s play!')
# Value of the third die <--- This should be indented inside the elif.
print('\nDie 3:', die3)
# Results of dice roll
if die3 > die1 and die3 < die2:
print('\n*** You win! ***')
chipBalance = chipBalance + bet
elif die3 < die1 or die3 > die2:
print('\n*** Sorry - You lose! ***')
chipBalance = chipBalance - bet
elif die3 == die1 or die3 == die2:
print('\n*** You hit the post - You lose! ***')
chipBalance = chipBalance - bet
# Displays when chip balance has reached zero
if chipBalance <= 0:
print('\nYou\'re all out of chips!\n\n*** GAME OVER ***')
else:
print('\nYou now have', chipBalance, 'chips!')
# Update loop control
play = input('Play again [y|n]? ')