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)
我假设这意味着它不仅需要的类文件,而且这个类的一个实例。所以新的问题是我必须在其他地方将该实例传递给其他人吗?或者这可以在其他地方使用仿真实例吗?
可以告诉你你的代码? – namit 2013-03-24 03:58:29
我已经添加了它,希望它是有道理的 – EasilyBaffled 2013-03-24 04:18:26
您需要发布的类和方法签名(在'class'和'def'线)。为什么你有两个'simulation.move()'调用? – 2013-03-24 04:22:49