我在比赛中找不到任何问题,除了比赛不会结束。我看不出有什么问题。你知道吗
def fight(enemy, playerH, enemyH): #defining a function fight
slay =True
def testDeath(pHealth, eHealth, enemy): #defining a function to test if player/enemy is dead
if pHealth <= 0:
slay = False
print"You have lost the fight, better luck next time."
elif eHealth <= 0:
slay = False
print"You have slain the",enemy,". You win! Congratulations!"
else:
slay = True
#end of the testDeath function
print"You are fighting a",enemy
while slay: #while loop to perform the fight
playerD = randint(0,5) #making each characters damage using randint
dragonD = randint(0,7)
trollD = randint(0,4)
if enemy == "troll":
enemyD = trollD
elif enemy == "dragon":
enemyD = dragonD
print"Your health:",playerH
print enemy,"'s health:",enemyH
sleep(1) #sleep makes next message appear after (1) second(s)
if playerD == 5 or playerD == 4: #player's attack
print"You deal",playerD,"damage points. A critical hit!"
enemyH = enemyH - playerD #removing player damage from enemy health
testDeath(playerH, enemyH, enemy)
if slay == False: break
#sleep(1.5)
#print"The",enemy,"has",enemyH,"health points remaining."
sleep(2)
elif playerD == 0:
print"You attack has missed. You deal 0 damage points."
sleep(2)
else:
print"You deal",playerD,"damage points."
enemyH = enemyH - playerD
testDeath(playerH, enemyH, enemy)
if slay == False: break
#sleep(1.5)
#print"The",enemy,"has",enemyH,"health points remaining."
sleep(2)
if enemy == "troll":
if enemyD == 4:
print"The troll deals 4 damage points. A critical hit!"
playerH = playerH - enemyD
testDeath(playerH, enemyH, enemy)
if slay == False: break
#sleep(1.5)
#print"You have",playerH,"health points remaining."
sleep(2)
elif enemyD == 0:
print"The troll's attack missed. He deals 0 damage points."
sleep(2)
else:
print"The troll deals",enemyD,"damage points."
playerH = playerH - enemyD
testDeath(playerH, enemyH, enemy)
if slay == False: break
#sleep(1.5)
#print"You have",playerH,"health points remaining."
sleep(2)
elif enemy == "dragon":
if enemyD == 6 or enemyD == 7:
print"The dragon deals",enemyD,"damage points. A critical hit!"
playerH = playerH - enemyD
testDeath(playerH, enemyH, enemy)
if slay == False: break
#sleep(1.5)
#print"You have",playerH,"health points remaining."
sleep(2)
elif enemyD == 0:
print"The dragon's attack missed. He deals 0 damage points."
sleep(2)
else:
print"The dragon deals",enemyD,"damage points."
playerH = playerH - enemyD
testDeath(playerH, enemyH, enemy)
if slay == False: break
#sleep(1.5)
#print"You have",playerH,"health points remaining."
sleep(2)
我知道代码太多了,但我觉得少一点是不够的。可能是的,但我看不出问题所在,我不知道该在这里贴什么。你知道吗
在有人死之前一切都很好。当某物死亡时,它会说"congratulations you win"
,但战斗仍将继续。有人看到问题了吗?你知道吗
您的
testDeath
函数定义自己的本地slay
。它与while
循环正在测试的值没有连接。你需要return
:并分配:
您可以重新排列函数以使其更整洁:
注意
str.format
和docstring的使用以及更具逻辑性的结构。你知道吗相关问题 更多 >
编程相关推荐