Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 在循环python 3.6上更正返回选项上的逻辑_Python 3.x_Loops - Fatal编程技术网

Python 3.x 在循环python 3.6上更正返回选项上的逻辑

Python 3.x 在循环python 3.6上更正返回选项上的逻辑,python-3.x,loops,Python 3.x,Loops,我参加了一个Python在线课程,其中一个教程是为RPG创建一个作战系统。我完成了教程,觉得遗漏了很多东西。缺少的特性之一是,没有选择返回到玩家的动作,这可能导致无限循环。我已经编写了一个很大的部分,通过键入“0”包含一种返回的方法,它可以工作,除了在选择项目时没有项目数量,以及在一个法术没有更多MP时。在这种情况下,当选择“0”时,数组上的最后一个条目将自动实现。因此,假设我没有MP,“cura”是我在列表中的最后一个法术,如果我选择“0”,cura将不受影响地受到保护。有人能看一下我包含的这

我参加了一个Python在线课程,其中一个教程是为RPG创建一个作战系统。我完成了教程,觉得遗漏了很多东西。缺少的特性之一是,没有选择返回到玩家的动作,这可能导致无限循环。我已经编写了一个很大的部分,通过键入“0”包含一种返回的方法,它可以工作,除了在选择项目时没有项目数量,以及在一个法术没有更多MP时。在这种情况下,当选择“0”时,数组上的最后一个条目将自动实现。因此,假设我没有MP,“cura”是我在列表中的最后一个法术,如果我选择“0”,cura将不受影响地受到保护。有人能看一下我包含的这一小部分,看看错误在哪里吗?如果需要,我将包含整个代码

while running:
print("====================\n")
print("NAME               HP                                       MP")

for player in players:
    player.get_stats()

print("")

for enemy in enemies:
    enemy.get_enemy_stats()

for player in players:
    # check if player won
    if defeated_enemies == 3:
        print("\n" + bcolors.OKGREEN + "You Win!\n♫♫ Fanfare ♫♫" + bcolors.ENDC)
        running = False
        break

    start = True

    while start:
        start = False
        choice = player.choose_action()
        index = choice - 1

        if index == 0:
            dmg = player.generate_damage()
            enemy = player.choose_target(enemies)

            enemies[enemy].take_damage(dmg)
            print("\n" + player.name.replace(" ", "") + " attacked " + enemies[enemy].name.replace(" ", "") + " for", dmg, "points of damage.")

            if enemies[enemy].get_hp() == 0:
                print(bcolors.BOLD + bcolors.FAIL + enemies[enemy].name.replace(" ", "") + " HAS FALLEN!" + bcolors.ENDC)
                del enemies[enemy]
                defeated_enemies += 1

        elif index == 1:
            check_mp = True
            while check_mp:
                mag_choice = player.choose_magic()
                magic_choice = mag_choice - 1
                spell = player.magic[magic_choice]
                magic_dmg = spell.generate_damage()
                current_mp = player.get_mp()

                if spell.cost > current_mp:
                    print(bcolors.FAIL + "\nNot enough MP. Please choose a different spell. Type 0 to go back." + bcolors.ENDC)
                    continue
                else:
                    check_mp  = False

            if magic_choice == -1:
                start = True
                continue

            player.reduce_mp(spell.cost)

            if spell.type == "white":
                player.heal(magic_dmg)
                print(bcolors.OKBLUE + "\n" + spell.name + " heals", player.name, "for", str(magic_dmg), "HP." + bcolors.ENDC)
                if player.hp > player.maxhp:
                   player.hp = player.maxhp

            elif spell.type == "black":
                enemy = player.choose_target(enemies)
                enemies[enemy].take_damage(magic_dmg)
                print(bcolors.OKBLUE + "\n" + spell.name + " deals", str(magic_dmg), "points of damage to " + enemies[enemy].name.replace(" ", "") + bcolors.ENDC)

                if enemies[enemy].get_hp() == 0:
                    print(bcolors.BOLD + bcolors.FAIL + enemies[enemy].name.replace(" ", "") + " HAS FALLEN!" + bcolors.ENDC)
                    del enemies[enemy]
                    defeated_enemies += 1

        elif index == 2:
            choose_item = True
            while choose_item:
                itm_choice = player.choose_item()
                item_choice = itm_choice -1
                item = player.items[item_choice]["item"]

                if player.items[item_choice]["quantity"] == 0:
                    print(bcolors.FAIL + "\nThere are no more " + str(item.name) +"s left. Please choose a different item. Type 0 to go back." + bcolors.ENDC)
                    continue
                else:
                    break

            if item_choice == -1:
                start = True
                continue

            player.items[item_choice]["quantity"] -= 1

            if item.type == "potion":
                player.heal(item.prop)
                print(bcolors.OKGREEN + "\n" + item.name + " heals", player.name, "for", str(item.prop), "HP." + bcolors.ENDC)
                if player.hp > player.maxhp:
                   player.hp = player.maxhp

            elif item.type == "elixer":
                if item.name == "MegaElixer":
                    print("\n" + player.name.replace(" ", ""), "uses", item.name)
                    print(bcolors.OKGREEN + "HP and MP fully restored to all party members!" + bcolors.ENDC)
                    for i in players:
                        i.hp = i.maxhp
                        i.mp = i.maxmp
                else:
                    player.hp = player.maxhp
                    player.mp = player.maxmp
                    print(player.name.replace(" ", ""), "uses", item.name)
                    print(bcolors.OKGREEN + player.name.replace(" ", "") + " HP and MP fully restored!" + bcolors.ENDC)

            elif item.type == "attack":
                enemy = player.choose_target(enemies)
                enemies[enemy].take_damage(item.prop)
                print(bcolors.FAIL + "\n" + item.name + " deals", str(item.prop), "points of damage to " +  enemies[enemy].name.replace(" ", "") + bcolors.ENDC)

                if enemies[enemy].get_hp() == 0:
                    print(bcolors.BOLD + bcolors.FAIL + enemies[enemy].name.replace(" ", "") + " HAS FALLEN!" + bcolors.ENDC)
                    del enemies[enemy]
                    defeated_enemies += 1
    else:
        continue