From 9909b125010b3bb7731e352d51fa560a1f1dc3b5 Mon Sep 17 00:00:00 2001 From: Yohann D'ANELLO Date: Wed, 11 Nov 2020 00:50:47 +0100 Subject: [PATCH] Fight other entities --- dungeonbattle/entities/player.py | 17 +++++++++++++++++ dungeonbattle/game.py | 6 ++++++ dungeonbattle/settings.py | 1 + 3 files changed, 24 insertions(+) diff --git a/dungeonbattle/entities/player.py b/dungeonbattle/entities/player.py index c9a6334..99763e1 100644 --- a/dungeonbattle/entities/player.py +++ b/dungeonbattle/entities/player.py @@ -1,3 +1,5 @@ +from random import randint + from ..interfaces import FightingEntity @@ -26,7 +28,22 @@ class Player(FightingEntity): self.level += 1 self.current_xp -= self.max_xp self.max_xp = self.level * 10 + self.health = self.maxhealth def add_xp(self, xp: int) -> None: self.current_xp += xp self.level_up() + + def fight(self) -> bool: + """ + Fight all f + """ + one_fight = False + for entity in self.map.entities: + if entity != self and isinstance(entity, FightingEntity) and\ + self.distance_squared(entity) <= 1: + self.hit(entity) + one_fight = True + if entity.dead: + self.add_xp(randint(3, 7)) + return one_fight diff --git a/dungeonbattle/game.py b/dungeonbattle/game.py index 8be446d..e4e7300 100644 --- a/dungeonbattle/game.py +++ b/dungeonbattle/game.py @@ -24,6 +24,7 @@ class KeyValues(Enum): RIGHT = auto() ENTER = auto() SPACE = auto() + FIGHT = auto() class Game: @@ -88,6 +89,8 @@ class Game: elif key in (self.settings.KEY_UP_PRIMARY, self.settings.KEY_UP_SECONDARY): return KeyValues.UP + elif key == self.settings.KEY_FIGHT: + return KeyValues.FIGHT elif key == self.settings.KEY_ENTER: return KeyValues.ENTER elif key == ' ': @@ -122,6 +125,9 @@ class Game: elif key == KeyValues.RIGHT: if self.player.move_right(): self.map.tick() + elif key == KeyValues.FIGHT: + if self.player.fight(): + self.map.tick() elif key == KeyValues.SPACE: self.state = GameMode.MAINMENU diff --git a/dungeonbattle/settings.py b/dungeonbattle/settings.py index 258d88f..0558614 100644 --- a/dungeonbattle/settings.py +++ b/dungeonbattle/settings.py @@ -27,6 +27,7 @@ class Settings: ['d', 'Touche principale pour aller vers la droite'] self.KEY_RIGHT_SECONDARY = \ ['KEY_RIGHT', 'Touche secondaire pour aller vers la droite'] + self.KEY_FIGHT = ['f', 'Touche pour frapper un ennemi'] self.KEY_ENTER = \ ['\n', 'Touche pour valider un menu'] self.TEXTURE_PACK = ['ascii', 'Pack de textures utilisé']