名字'敌人'未定义 - Python

时间:2017-12-31 07:14:25

标签: python function

我的代码没有正常工作,它说我在定义敌人时没有定义:

class Gnome:
    def __init__(enemy, name):
        enemy.name = name
        enemy.health2 = 50
        enemy.health = enemy.health2
        enemy.attack = 7
        enemy.goldgain = 6
GnomeIG = Gnome("Gnome")

class Goblin:
    def __init__(enemy, name):
        enemy.name = name
        enemy.health2 = 38
        enemy.health = enemy.health2
        enemy.attack = 5
        enemy.goldgain = 3
GoblinIG = Goblin("Goblin")

class Wolf:
    def __init__(enemy, name):
        enemy.name = name
        enemy.health2 = 20
        enemy.health = enemy.health2
        enemy.attack = 3
        enemy.goldgain = 1
WolfIG = Wolf("Wolf")

这是游戏:

def prefight():
    global enemy
    enemynum = random.randint(1, 3)
    if enemynum == "1":
        enemy = GnomeIG
    elif enemynum == "2":
        enemy = GoblinIG
    elif enemynum == "3":
        enemy = WolfIG
    fight()

所有与“敌人”有关的行'给出未定义的错误。

def fight():
    print("You have encountered a %s!" % enemy.name)
    print("Player Life: %d/%d | Enemy Life: %i/%i" % (PlayerIG.health, 
           PlayerIG.health2, enemy.health, enemy.health2)) 
    print("Potions: %i\n" % PlayerIG.potions)
    print("1. Attack")
    print("2. Drink Potion")
    print("3. Run")
    option = input("> ")
    if option == "1":
        attack()
    elif option == "2":
        drinkpotion()
    elif option == "3":
        run()
    else:
        fight()

错误:

文件" C:/ Users / Leo / PycharmProjects / RPG Proj / rpg.py",第231行,

main()的

文件" C:/ Users / Leo / PycharmProjects / RPG Proj / rpg.py",第51行,主要

开始()

文件" C:/ Users / Leo / PycharmProjects / RPG Proj / rpg.py",第65行,开始

启动1()

文件" C:/ Users / Leo / PycharmProjects / RPG Proj / rpg.py",第84行,在start1中

野生()

文件" C:/ Users / Leo / PycharmProjects / RPG Proj / rpg.py",第104行,野外

斗争()

文件" C:/ Users / Leo / PycharmProjects / RPG Proj / rpg.py",第118行,在战斗中

打印("您遇到过%s!"%enemy.name)

NameError:name'敌人'未定义

2 个答案:

答案 0 :(得分:1)

这行代码生成1到3之间的整数

enemynum = random.randint(1, 3)

然而,你的条件是对字符串进行测试。

if enemynum == "1":

这意味着不会输入任何if或elif语句,因此永远不会定义敌人,因为字符串永远不会等于整数。

要解决此问题,请更改if和elif语句,以检查enemynum是否等于1,2或3作为整数 e.g。

if enemynum == 1:
    enemy = GnomeIG

答案 1 :(得分:0)

  

错误:

     

文件“ C:/ Users / Leo / PycharmProjects / RPG Proj / rpg.py”,第231行,位于

     

main()

     

文件“ C:/ Users / Leo / PycharmProjects / RPG Proj / rpg.py”,主行第51行

     

start()

     

文件“ C:/ Users / Leo / PycharmProjects / RPG Proj / rpg.py”在开始时位于第65行

     

start1()

     

文件“ C:/ Users / Leo / PycharmProjects / RPG Proj / rpg.py”,第84行,在   start1

     

wild()

     

第104行中的文件“ C:/ Users / Leo / PycharmProjects / RPG Proj / rpg.py”

     

fight()

     

文件“ C:/ Users / Leo / PycharmProjects / RPG Proj / rpg.py”,第118行,在   战斗

     

print(“您遇到了%s!”%敌人。名称)

看起来您调用main()-> start()-> start1()-> fight(),并且从不实际调用prefight()。因此,永远没有机会引入这个名为敌人的变量。