from random import choice from .player import Player from ..interfaces import FightingEntity, Map class Monster(FightingEntity): def act(self, m: Map) -> None: """ By default, a monster will move randomly where it is possible And if a player is close to the monster, the monster run on the player. """ target = None for entity in m.entities: if self.distance_squared(entity) <= 25 and \ isinstance(entity, Player): target = entity break if target: # Move to target player y, x = self.vector(target) if abs(y) > abs(x): # Move vertically if y > 0: self.move_down() else: self.move_up() else: # Move horizontally if x > 0: self.move_right() else: self.move_left() else: for _ in range(100): if choice([self.move_up, self.move_down, self.move_left, self.move_right])(): break class Hedgehog(Monster): name = "hedgehog" maxhealth = 10 strength = 3