我知道这个标题听起来很让人困惑,但请容忍我。我编码我的第一个游戏,我试图建立一个类别的AI (称为AI_mode),我的obj_creature类可以用来获取任何类型的人工智能,生物实体需要。我将一个方法从AI_mode作为变量传递给obj_creature。从AI_mode传递给obj_creature的方法从obj_creature类内部调用另一个方法。下面是一些简化的代码:
class obj_creature:
def __init__(self, npc_mode=None):
self.npc_mode=npc_mode
def move(self, word):
print(word)
class AI_mode:
def ai_move_left(self):
self.owner.move("Hello World")
enemy_ai=AI_mode().ai_move_left
enemy_creature=obj_creature(npc_mode=enemy_ai)
if enemy_creature.npc_mode:
enemy_creature.npc_mode()此代码给出了错误:
self.owner.move("Hello World")
AttributeError: 'AI_mode' object has no attribute 'owner'我很确定.owner()不是在那里使用的正确东西,因为我从来没有声明obj_creature是所有者,但我不确定在它的位置上使用什么。当我试图声明obj_creature为AI_mode的所有者时,如下所示:
class obj_creature:
def __init__(self, npc_mode=None):
self.npc_mode=npc_mode
if npc_mode:
npc_mode.owner=self我知道这个错误:
npc_mode.owner=self
AttributeError: 'method' object has no attribute 'owner'我的最终目标是使所有来自同一类的大量人工智能都能很容易地分配给任何种类的生物,并能够用相同的命令调用分配给它的任何AI。
发布于 2019-09-18 06:30:17
查找以下代码设计:
class obj_creature:
def __init__(self, npc_mode=None):
self.npc_mode=npc_mode
def move(self, word):
print(word)
class AI_mode:
def __init__(self, owner):
self.owner = owner
def ai_move_left(self):
self.owner.move("Hello World")
enemy_creature=obj_creature()
enemy_ai=AI_mode(enemy_creature)
enemy_creature.npc_mode=enemy_ai.ai_move_left
if enemy_creature.npc_mode:
enemy_creature.npc_mode()https://stackoverflow.com/questions/57986007
复制相似问题