游戏中的 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 语句看起来不错,但无论哪种方式,它都会在最后中断。

考虑创建一个函数来管理您的游戏玩法,并使用更小的函数来管理机制,例如 运行宁、攻击、改变生命值等。这可能有助于您更好地组织代码并使事情更清晰。坚持下去——它看起来不错!