diff --git a/dungeonbattle/entities/monsters.py b/dungeonbattle/entities/monsters.py index 2246e50..7c19c62 100644 --- a/dungeonbattle/entities/monsters.py +++ b/dungeonbattle/entities/monsters.py @@ -1,9 +1,19 @@ +from random import choice + from ..interfaces import FightingEntity, Map class Monster(FightingEntity): def act(self, m: Map) -> None: - pass + """ + 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. + """ + # TODO If a player is close, move to the player + while True: + if choice([self.move_up, self.move_down, + self.move_left, self.move_right])(): + break class Hedgehog(Monster): diff --git a/dungeonbattle/game.py b/dungeonbattle/game.py index 23cc598..e8f412c 100644 --- a/dungeonbattle/game.py +++ b/dungeonbattle/game.py @@ -71,6 +71,7 @@ class Game: self.display_refresh() key = screen.getkey() self.handle_key_pressed(self.translate_key(key)) + self.map.tick() def translate_key(self, key: str) -> KeyValues: """ diff --git a/dungeonbattle/interfaces.py b/dungeonbattle/interfaces.py index 4c281e4..65e381d 100644 --- a/dungeonbattle/interfaces.py +++ b/dungeonbattle/interfaces.py @@ -88,6 +88,13 @@ class Map: hedgehog.move(y, x) self.add_entity(hedgehog) + def tick(self) -> None: + """ + Trigger all entity events. + """ + for entity in self.entities: + entity.act(self) + class Tile(Enum): EMPTY = auto()