未定义名称“敌人”

2024-09-28 20:47:58 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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/角色扮演者,第231行

主()

文件“C:/Users/Leo/PycharmProjects/RPG Proj/角色扮演者,第51行

开始()

文件“C:/Users/Leo/PycharmProjects/RPG Proj/角色扮演者“,第65行,起始处”

开始1()

文件“C:/Users/Leo/PycharmProjects/RPG Proj/角色扮演者,第84行,在start1中

野生()

文件“C:/Users/Leo/PycharmProjects/RPG Proj/角色扮演者,第104行,在野外

战斗()

文件“C:/Users/Leo/PycharmProjects/RPG Proj/角色扮演者“,第118行,在战斗中

print(“您遇到了%s!”% 敌人名称)你知道吗

名称错误:未定义名称“敌人”


Tags: 文件namedefusersrpgprojprinthealth
2条回答

这行代码生成一个介于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

Error:

File "C:/Users/Leo/PycharmProjects/RPG Proj/rpg.py", line 231, in

main()

File "C:/Users/Leo/PycharmProjects/RPG Proj/rpg.py", line 51, in main

start()

File "C:/Users/Leo/PycharmProjects/RPG Proj/rpg.py", line 65, in start

start1()

File "C:/Users/Leo/PycharmProjects/RPG Proj/rpg.py", line 84, in start1

wild()

File "C:/Users/Leo/PycharmProjects/RPG Proj/rpg.py", line 104, in wild

fight()

File "C:/Users/Leo/PycharmProjects/RPG Proj/rpg.py", line 118, in fight

print("You have encountered a %s!" % enemy.name)

看起来您调用main()->;start()->;start1()->;fight(),而实际上从未调用prefight()。所以它永远不会有机会引入这个名为敌人的变量。你知道吗

相关问题 更多 >