我的代码没有正常工作,它说我在定义敌人时没有定义:
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'敌人'未定义
答案 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()。因此,永远没有机会引入这个名为敌人的变量。