class Bot(GameObject): """Bot Basic tier 1 unit. """ fire_rate = 3.0 fire_dist = 20 movement_speed = 60.0 def __init__(self, position): super(Bot, self).__init__('assets/circle.png', position) self._fire_timer = Timer(Bot.fire_rate) def _fire(self, position): diff_x = position[0] - self.position[0] diff_y = position[1] - self.position[1] aim = helpers.normalize((diff_x, diff_y)) l = Bot.fire_dist fire_pos = (self.position[0] + aim[0] * l, self.position[1] + aim[1] * l) return Pulse(position=fire_pos, direction=aim) def fire(self, position): if self._fire_timer.check(): self._fire_timer.reset() return self._fire(position) return [] def update(self, delta, **kwargs): self._fire_timer.update(delta) dist = Bot.movement_speed * delta self.move(dist, 0) targets = [(400, 400), (200, 200), (300, 300)] if targets: target = random.choice(targets) shot = self.fire(target) if shot: return [shot] return [] def __str__(self): return 'Bot'