游戏中的 while 循环问题(python 文本游戏)
Problem with while loop in game (python text game)
我一直在开发一款游戏,我所拥有的就是我放在下面的东西。它的问题是,每当你 运行 远离敌人时,无论你是否成功,你都会 运行 远离,我不知道如何阻止这种情况发生。有人有什么建议吗?
编辑:为了解决问题我删除了
如果 slime_rank1_chances > 0:
因为它应该在游戏开始时是 100% 而我改变了
而 slime_rank1_health != 0:
进入
而 slime_rank1_health > 0:
import random
#rng
dice = random.randrange(1,7)
critical_hit_chance = 15
run_chance = 10
#characters
name_1_health = 10
name_1_attack = 10
name_1_luck = 10
name_1_exp = 0
#enemies
slime_rank1_health = 10
slime_rank1_attack = 1
slime_rank1_luck = 1
slime_rank1_exp = 5
slime_rank1_chances = random.randrange(1,10)
#simulating an attack by a slime rank 1
if slime_rank1_chances > 0:
print("you are suddenly attacked by a slime rank 1!")
while slime_rank1_health != 0:
if random.randrange(1, 16) == critical_hit_chance:
name_1_health = name_1_health - (slime_rank1_attack*2)
print("Its a critical hit!")
print("you have lost " + str(slime_rank1_attack*2) + " health")
else:
name_1_health = name_1_health - slime_rank1_attack
print("you have lost " + str(slime_rank1_attack) + " health")
print("your current health is " + str(name_1_health))
slime_rank1_choice1 = input("What will you do?: A)Attack B)Run [A/B]")
while True:
if slime_rank1_choice1 in ["A","B"]:
break
if slime_rank1_choice1 == "A":
print("You attack slime rank 1")
if random.randrange(1, 16) == critical_hit_chance:
slime_rank1_health = slime_rank1_health - (name_1_attack*2)
print("You attack and deal "+str(name_1_attack*2)+" damage")
print("Its a critical hit!")
else:
slime_rank1_health = slime_rank1_health - name_1_attack
print("You attack and deal "+str(name_1_attack)+" damage")
elif slime_rank1_choice1 == "B":
print("you have chosen to run")
if random.randrange(1,11) == run_chance:
print("you have succesfully escaped!")
slime_rank1_health = slime_rank1_health - slime_rank1_health
else:
print("you failed to escape")
if random.randrange(1, 16) == critical_hit_chance:
name_1_health = name_1_health - (slime_rank1_attack*2)
print("Its a critical hit!")
print("you have lost " + str(slime_rank1_attack*2) + " health")
else:
name_1_health = name_1_health - slime_rank1_attack
print("you have lost " + str(slime_rank1_attack) + " health")
break
我认为您的问题是每次尝试 运行 时代码都会结束,无论您是否成功。您的 if/else 语句看起来不错,但无论哪种方式,它都会在最后中断。
考虑创建一个函数来管理您的游戏玩法,并使用更小的函数来管理机制,例如 运行宁、攻击、改变生命值等。这可能有助于您更好地组织代码并使事情更清晰。坚持下去——它看起来不错!
我一直在开发一款游戏,我所拥有的就是我放在下面的东西。它的问题是,每当你 运行 远离敌人时,无论你是否成功,你都会 运行 远离,我不知道如何阻止这种情况发生。有人有什么建议吗?
编辑:为了解决问题我删除了 如果 slime_rank1_chances > 0: 因为它应该在游戏开始时是 100% 而我改变了 而 slime_rank1_health != 0: 进入 而 slime_rank1_health > 0:
import random
#rng
dice = random.randrange(1,7)
critical_hit_chance = 15
run_chance = 10
#characters
name_1_health = 10
name_1_attack = 10
name_1_luck = 10
name_1_exp = 0
#enemies
slime_rank1_health = 10
slime_rank1_attack = 1
slime_rank1_luck = 1
slime_rank1_exp = 5
slime_rank1_chances = random.randrange(1,10)
#simulating an attack by a slime rank 1
if slime_rank1_chances > 0:
print("you are suddenly attacked by a slime rank 1!")
while slime_rank1_health != 0:
if random.randrange(1, 16) == critical_hit_chance:
name_1_health = name_1_health - (slime_rank1_attack*2)
print("Its a critical hit!")
print("you have lost " + str(slime_rank1_attack*2) + " health")
else:
name_1_health = name_1_health - slime_rank1_attack
print("you have lost " + str(slime_rank1_attack) + " health")
print("your current health is " + str(name_1_health))
slime_rank1_choice1 = input("What will you do?: A)Attack B)Run [A/B]")
while True:
if slime_rank1_choice1 in ["A","B"]:
break
if slime_rank1_choice1 == "A":
print("You attack slime rank 1")
if random.randrange(1, 16) == critical_hit_chance:
slime_rank1_health = slime_rank1_health - (name_1_attack*2)
print("You attack and deal "+str(name_1_attack*2)+" damage")
print("Its a critical hit!")
else:
slime_rank1_health = slime_rank1_health - name_1_attack
print("You attack and deal "+str(name_1_attack)+" damage")
elif slime_rank1_choice1 == "B":
print("you have chosen to run")
if random.randrange(1,11) == run_chance:
print("you have succesfully escaped!")
slime_rank1_health = slime_rank1_health - slime_rank1_health
else:
print("you failed to escape")
if random.randrange(1, 16) == critical_hit_chance:
name_1_health = name_1_health - (slime_rank1_attack*2)
print("Its a critical hit!")
print("you have lost " + str(slime_rank1_attack*2) + " health")
else:
name_1_health = name_1_health - slime_rank1_attack
print("you have lost " + str(slime_rank1_attack) + " health")
break
我认为您的问题是每次尝试 运行 时代码都会结束,无论您是否成功。您的 if/else 语句看起来不错,但无论哪种方式,它都会在最后中断。
考虑创建一个函数来管理您的游戏玩法,并使用更小的函数来管理机制,例如 运行宁、攻击、改变生命值等。这可能有助于您更好地组织代码并使事情更清晰。坚持下去——它看起来不错!