def kill( self ): '''Decreases the number of hits necessary for the target to be destroyed and changes the target's color. Called everytime a OBJECT(BraitenbergBall) hits the target.''' self.control.playTargetSound() self.counter -= 1 self.setColor( breve.vector( 0, 1, self.counter * 0.2 ) ) if self.counter==0: breve.deleteInstance(self) self.control.updateTargets()
def iterate(self): super(Environ, self).iterate() if self.next_plant_born < time.time(): self.bord_plant() self.next_plant_born = time.time() + random.random()*2.0 + 1.0 try: for plant in self.plants: if plant.energy < 0.01: print "Plant eaten" self.plants.remove(plant) breve.deleteInstance(plant) for rabbit in self.rabbits: if rabbit.fat < 0.01: print "Rabbit eaten" self.__on_rabbit_die(rabbit, LiveLog.EATEN) self.rabbits.remove(rabbit) breve.deleteInstance(rabbit) elif rabbit.get_age() > rabbit.die_at_age: print "Rabbit died" self.__on_rabbit_die(rabbit, LiveLog.AGE) self.rabbits.remove(rabbit) breve.deleteInstance(rabbit) elif rabbit.dead and not rabbit.was_eaten: if not rabbit.logged: print "Rabbit starved" self.__on_rabbit_die(rabbit, LiveLog.STARV) elif rabbit.dead: self.__on_rabbit_die(rabbit, LiveLog.EATEN) for wolf in self.wolves: if wolf.health < 0.01: print "Wolf eaten" self.wolves.remove(wolf) self.__on_wolf_die(wolf, LiveLog.STARV) breve.deleteInstance(wolf) elif wolf.get_age() > wolf.die_at_age: print "Wolf died" self.wolves.remove(wolf) self.__on_wolf_die(wolf, LiveLog.AGE) breve.deleteInstance(wolf) except Exception, e: print "ERROR: %s" % e