我正在做一个游戏。我有两个类,我想要一个来访问其他实例变量。我不知道该怎么做,也不知道是否有可能。在
这两个类在某种程度上都继承了类gameEngine
游戏引擎<;-游戏
游戏引擎<;-SuperSprite<;-Character<;-敌人
游戏引擎
我的游戏类创建一个对象self.player = Player(self)
的实例变量,我希望能够在敌方类中使用它,这样它就可以self.player.x
。所以我可以在敌人的类中制造AI,这样它就可以知道我的玩家了。任何建议,如何做到这一点,我的逻辑可能是错误的,所以任何帮助将不胜感激。如果我需要发布我的代码或任何东西,请告诉我。在
或者我一直试图把一个对象传递给一个函数。这样鲍勃就可以在游戏课上得到恩尼美。但我得到一个错误'敌人'对象不可调用。但是它传递它,然后函数打印出信息,然后就死了。但是如果我将self.enemyAi(self.bob)
移动到点击状态,它就可以正常工作了。在
if self.enemyWeakBtn.clicked:
print "spawning enemey"
self.bob = Enemy(self)
self.enemies.append(self.bob)
self.enemyGroup = self.makeSpriteGroup(self.enemies)
self.addGroup(self.enemyGroup)
self.enemyActive = True
elif self.enemyActive:
print self.bob
self.enemyAi(self.bob)
print " active"
错误很可能是缺少敌方类的构造函数。通过运行:
它在
Enemy
类中查找函数__init__(self, arg1)
。如果不提供它,Python将无法将Enemy
视为“可调用的”,这意味着它不能像函数一样使用,或者在本例中,不能用于用一个参数调用构造函数。在如果我没听错,你想让Enermy实例访问Player实例
有两种方法可以完成它。我在程序中使用第二种方法atm,并计划添加第一种方法。在
第一种方法是让类拥有一个实例,调用一个类方法可以获得该实例。在
第二种方法就是我一直在用的方法。它涉及到让游戏类管理游戏中的所有内容。意思:一切都是游戏中的变数。另外,每个游戏变量(例如,一个玩家)都有一个名为game的属性,该属性引用回游戏实例。在
示例:
^{pr2}$有些人可能反对第二种方法,我也看到了问题的额外步骤。也许有人能对二者的比较有所启示。在
一个组合方法可能是我希望转移到的,但是这会引起一些问题,你需要把哪个放在文件的第一位,否则你可能会得到播放器未定义或游戏没有定义。虽然我认为可以通过将这两个类分成不同的文件来解决。在
相关问题 更多 >
编程相关推荐