我可以将变量分配给分配给类实例的变量吗?-Python问题
我正在创建一个基于文本的游戏,我一直有这个问题,我不知道如何解决我可以将变量分配给分配给类实例的变量吗?-Python问题,python,python-3.x,Python,Python 3.x,我正在创建一个基于文本的游戏,我一直有这个问题,我不知道如何解决 class Enemy: def __init__(self, hp, maxHp, attack, defense): self.maxHp = 100 self.hp = self.maxHp self.attack = 5 self.defense = 1 # --- Now we just create the two different enemie
class Enemy:
def __init__(self, hp, maxHp, attack, defense):
self.maxHp = 100
self.hp = self.maxHp
self.attack = 5
self.defense = 1
# --- Now we just create the two different enemies from this class --- #
tutoEnemy1 = Enemy(100, 100, 5, 1)
tutoEnemy2 = Enemy(100, 100, 5, 1)
下面是与此问题相关的代码。我给类实例分配了两个变量以获得两个独立的敌人。一个叫tutoEnemy1,另一个叫tutoEnemy2
在游戏代码中,包含战斗功能的部分当然有一个涉及攻击敌人的部分。我最初认为,通过创建两个单独的“如果”语句,选择你想要攻击的敌人的那一刻一切都会顺利进行,但后来我意识到,在出现两个以上敌人的那一刻,我有很多垃圾,重复的代码,涉及计算伤害的过程和所有这些东西
我的想法是定义一个函数,每次都能实现损伤计算过程,这样我就不必重复任何代码
def damage():
option = input("> ")
if option == 1:
selectedEnemy = tutoEnemy1()
elif option == 2:
selectedEnemy = tutoEnemy2()
else:
input("Incorrect input, type a correct one.")
damage()
rawDamage = Player.attack * multiplierDamage
finalDamage = rawDamage - selectedEnemy.defense
selectedEnemy -= finalDamage
问题是,最初我将敌方类实例分配给了“tutoEnemy1&2”变量,一切正常。但现在,它给了我一个问题,“selectednemy”变量似乎没有按照我的预期工作(获取一个敌人或另一个敌人的信息)。它只给了我这个错误:
Traceback (most recent call last):
File "c:\Users\acmem\Desktop\Text-Based Game\RPG.py", line 75, in <module>
selectedEnemy = tutoEnemy1()
TypeError: 'Enemy' object is not callable
回溯(最近一次呼叫最后一次):
文件“c:\Users\acmem\Desktop\Text-Based Game\RPG.py”,第75行,在
selectedEnemy=tutoEnemy1()
TypeError:“敌人”对象不可调用
有没有办法做到这一点?如果是,正确的sintax是什么?(我使用Python 3.0)要将tutoEnemy1或tutoEnemy2的引用指定给“SelectedEmy”,您应该去掉括号,因为它们是调用函数的标准语法。 由于Tutoenem1和tutoEnemy2不可调用(=非函数),因此会引发此错误 因此,代码应该如下所示:
def损坏():
选项=输入(“>”)
如果选项==1:
selectedEnemy=tutoEnemy1
elif选项==2:
selectedEnemy=tutoEnemy2
不过,您可能会对上一句话产生问题,因为您试图从SelectedEndemy实例而不是从其HP中减去损害,所以您可能需要以下内容:
selectedEnemy.hp-=最终损坏
结尾不需要括号。只需使用selectedEnemy=tutoEnemy1