2013-03-24 77 views
1

我有两个班,第一个具有移动功能(生物,板)。然后在生物类中有一个调用移动的函数,那么在生物类中如何将当前生物传递给移动函数呢?如果它只是被移动(个体经营,self.board),因为当我尝试,我得到一个“来自导入未定义的变量: 移动”的错误?通过自另一个类的功能在自主的功能

下面是相关代码:

怪物:

class creature: 
    def __init__(self, social, intelligence, sensory, speed, bravery, strenght, size): 
     self.traits = [social, intelligence, sensory, speed, bravery, strenght] 
     self.x = 0 
     self.y = 0 
     self.hunger = 10 
     self.energy = 30 
     self.shelter = 0 
     self.dominance = 0 
     self.boardSize = size - 1 
     self.SOCIAL = 0 
     self.INTELLIGENCE = 1 
     self.SENSORY = 2 
     self.SPEED = 3 
     self.BRAVERY = 4 
     self.STRENGTH = 5 
... 
def performAction(self, action, location): 
     ...  
     if action == "storeFood": 
      food = location.vegetation 
      location.vegetation = -1 
      simulation.move(self, self.shelter) 
      self.shelter.foodStorage += food 
     ... 

模拟:

class simulation(): 
    def __init__(self, x): 
     self.creatures = {creature.creature():"", creature.creature():"", } 
     self.map = land.landMass 
     self.lifeCycles = x 
     self.runStay = ["rfl", "rbf", "rbl", "rbf", ] 
     self.befriend = ["bbl", "bbf"] 
     self.fight = ["fbl", "fbf", "bfl", "bff", "ffl", "fff"] 
...  
    def move(self, creature, target): 
      map[creature.x][creature.y].creatures.remove(creature) 
      creature.energy -= abs(map[creature.x][creature.y].elevation - target.elevation)/creature.getSpeed() 
      target.creatures.append(creature) 
      creature.x, creature.y = target.location 
      ... 

编辑: 行,所以我有所解决了这个问题。 Python的要求,我有simulation.simulation.map(self, self.shelter)我假设这意味着它不仅需要的类文件,而且这个类的一个实例。所以新的问题是我必须在其他地方将该实例传递给其他人吗?或者这可以在其他地方使用仿真实例吗?

+1

可以告诉你你的代码? – namit 2013-03-24 03:58:29

+0

我已经添加了它,希望它是有道理的 – EasilyBaffled 2013-03-24 04:18:26

+1

您需要发布的类和方法签名(在'class'和'def'线)。为什么你有两个'simulation.move()'调用? – 2013-03-24 04:22:49

回答