我正在创造一场战斗,据我所知,几乎一切都在运作。攻击造成适当的伤害,玩家和敌人有正确的生命值,所有物品都有效。然而,当你赢了,它会永远重复“你赢了”,直到你强行结束程序。如果运行状况正好为0,也不会发生这种情况。我认为问题所在的代码是
def enemyHP():
global enemyhealth
global playerhealth
if enemyhealth and playerhealth >0:
global dmg
global alcohol
if alcohol==1:
miss=random.randint(0,2)
print("The alcohol makes you more furious...")
if miss==0:
dmg=0
else:
dmg=dmg*2
enemyhealth=enemyhealth-dmg
if enemyhealth<=0:
print("you won")
exit()
else:
print("you did",dmg,"damage")
print("enemy health is:",enemyhealth)
我试着用exit()
、quit()
和sys.exit()
找到更好的方法来结束代码。它们都不起作用,我想知道是否有办法解决这个问题。提前谢谢
我可以简化一下,完整的代码如下
backpacklist=["sword","hand"]
enemyhealth=100
playerhealth=100
def enemyHP():
global enemyhealth
global playerhealth
if enemyhealth and playerhealth >0:
global dmg
enemyhealth=enemyhealth-dmg
if enemyhealth<=0:
print("you won")
exit
else:
print("you did",dmg,"damage,","enemy health is:",enemyhealth)
return enemyhealth
def playerattack():
global playerhealth
global enemyhealth
if playerhealth and enemyhealth >0:
print(backpacklist)
global dmg
help1=0
whatweapon=input("what weapon?:")
while backpacklist[help1]!=whatweapon:
help1=help1+1
if backpacklist[help1]==whatweapon:
if backpacklist[help1]=="hand": #to quickly kill
dmg=1000
elif backpacklist[help1]=="sword":
dmg=20
return dmg,playerhealth
def playerHP(enemydmg):
global enemyhealth
global playerhealth
if playerhealth and enemyhealth >0:
playerhealth=playerhealth-enemydmg
if playerhealth<=0:
print("you lose")
exit
else:
print("your health is:",playerhealth)
return playerhealth
def fight1(enemydmg):
while enemyhealth and playerhealth>0:
global dmg
dmg=0
playerattack()
enemyHP()
playerHP(enemydmg)
enemydmg=10
if enemyhealth and playerhealth >0:
fight1(enemydmg)
好吧,我已经设法解决了这个问题,在敌人的生命值低于0的时候,我把它的生命值设为0。我不知道为什么这样做有效,但是如果有效的话
下面是一个清理过的代码版本,它可以很好地工作,而不会像您提到的那样出现循环:
样本输出:
这是基于上述变量赋值
首先,我建议使用sys.exit()而不是exit()或quit(),看看Here为什么这通常是个好主意。我这里没有足够的信息来说明为什么处于该位置的sys.exit()不能退出程序,但我建议您看看在哪里调用该函数并对其进行更改
例如,假设您正在以某种形式的循环运行此函数,每次在战斗中发生回合时都会调用此函数,但是有时更好的做法是在满足首选状态时让程序继续,而不是强制退出程序mid函数,例如,如果敌人还有生命值,你可以让函数return False;如果敌人死了,你可以让函数return True;如果函数return True,你可以让循环结束;如果函数return True,你还可以让函数return enemyhealth,然后在函数之外计算出你是赢了还是输了
相关问题 更多 >
编程相关推荐