我尝试学习python只有3个星期,所以我不完全确定我在做什么。我正在尝试做一个简短、简单和愚蠢的游戏,我使用randint在玩家和计算机之间的战斗中给出一个随机值。健康值一直循环回到原始值,我似乎找不出原因……已经找了好几天了。我设置了一个中断来停止战斗,但它的‘健康’也没有达到零。谢谢你的帮助。
from random import randint
n = input()
print ('Welcome, ', n, ' Choose your weapon: Sword, Axe, or Mace.')
b = input()
if b == {'Sword'}:
print ('Good Choice ', (n), ' the Sword will keep you safe.')
elif b == {'Axe'}:
print ('Good Choice ', (n), ' the Axe will do some damage.')
elif b == {'Mace'}:
print ('Probably a bad choice ', (n), ' the mace is heavy and slow but may protect you.')
print ('The Knight Approaches! ', (n), ', Get your', (b),' and get ready!')
player = 50
knight = 50
battle = True
while player >= 0 or knight >= 0:
if b == 'Sword':
k2 = (knight - randint(3,4))
p2 = (player - randint(2,6))
print ('You have struck the knight! His health is now', k2)
print ('He has hit you as well! Your health is now', p2)
elif b == 'Axe':
print ('You have struck the knight! His health is now', knight - randint(2,6))
print ('He has hit you as well! Your health is now', player - randint(3,4))
elif b == 'Mace':
print ('You have struck the knight! His health is now', knight - randint(0,7))
print ('He has hit you as well! Your health is now', player - randint(2,6))
if player <= 0:
print ('You have died...')
elif knight <= 0:
print ('You have won!')
break
print ('Good Game')
发布于 2018-06-21 09:12:06
除非玩家拿起剑,否则你不能改变你的生命值。当您打印信息时,您还没有设置变量。请注意,当b == 'Sword‘时,只有k2 = (knight - randint(3,4))或p2。
发布于 2018-06-21 09:12:40
计算knight - randint(2,6)
的结果不会改变knight的值。
我想你可能想要这样的东西:
damage = randint(2, 6)
knight = knight - damage
发布于 2018-06-21 09:13:47
您正在打印k2和p2,它们在每次运行时都会被重新分配,并且没有上一次运行的内存。也就是说,你的玩家和骑士变量永远不会改变。为什么不干脆这样做:
if b == 'Sword':
knight = knight - randint(3,4)
player = player - randint(2,6)
print ('You have struck the knight! His health is now', knight)
print ('He has hit you as well! Your health is now', player)
https://stackoverflow.com/questions/50958938
复制相似问题