From f745bd1f3d9bbcc80a2654baea5f640b1ec071b8 Mon Sep 17 00:00:00 2001 From: anthony-melin Date: Thu, 16 Jul 2026 20:17:33 +0200 Subject: [PATCH] =?UTF-8?q?=F0=9F=9A=A7=20wip=20code=20split?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app.py | 86 ++++++++++++++++++++++++++++++++++------------------------ 1 file changed, 50 insertions(+), 36 deletions(-) diff --git a/app.py b/app.py index 6f98e4f..d3ac727 100644 --- a/app.py +++ b/app.py @@ -2,6 +2,7 @@ import os import sys from enum import Enum +from base_mob import BaseMob from character_builder import CharacterBuilder from level_one import Level @@ -21,6 +22,10 @@ class Action(Enum): return self.value[1] +def clear_console() -> None: + os.system('cls' if os.name == 'nt' else 'clear') + + def action_menu(actions_autorisees: list[Action] = None) -> Action: """Affiche le menu et retourne une action valide.""" @@ -34,55 +39,64 @@ def action_menu(actions_autorisees: list[Action] = None) -> Action: try: choix = int(input("\nChoix : ")) + clear_console() for action in actions_autorisees: if action.code == choix: return action print("Mauvais choix") except ValueError: + clear_console() print("Veuillez saisir un nombre.") -# Exemple d'utilisation -if __name__ == "__main__": - loaded_character = CharacterBuilder.load_character("Jamin") +def play_room(room: list[BaseMob], level: Level) -> None: + print(f"Pièce actuelle : {level.current_room_index}") + if room is not None: + for mob in room: + print(f"Un {mob.name} est devant toi !") + match action_menu([Action.COMBAT, Action.FUIR]): + case Action.COMBAT: + level.combat(mob, level.player) + if level.player.current_pv <= 0: + print("!!!!!!!!! Joueur mort !!!!!!!!!!") + break + if mob.current_pv == 0: + print(f"Le {mob.name} est mort !!") + case Action.FUIR: + print("Tu fuis la pièce") + else: + print("\n ------ Pièce vide ------ \n") + + +def play_donjon(level: Level) -> None: + while level.exit_level: + match action_menu([Action.PIECE_SUIVANTE, Action.QUITTER]): + case Action.PIECE_SUIVANTE: + if level.current_room_index >= len(level.rooms): + print("fin du donjon !") + break + play_room(level.rooms[level.current_room_index], level) + level.player.current_pv = level.player.max_pv + level.current_room_index += 1 + case Action.QUITTER: + level.exit_level = False + print(f"Au revoir {level.player.name} !") + + +def app(character_name: str) -> None: + loaded_character = CharacterBuilder.load_character(character_name) if not loaded_character: sys.exit(-1) print(loaded_character) level = Level(2, loaded_character) - player = level.player - rooms = level.rooms - number_room = len(rooms) - print(f"Nombre de pièce dans le donjon : {number_room}") + print(f"Nombre de pièce dans le donjon : {len(level.rooms)}") - while level.exit_level: - os.system('cls' if os.name == 'nt' else 'clear') - match action_menu([Action.PIECE_SUIVANTE, Action.QUITTER]): - case Action.PIECE_SUIVANTE: - if level.current_room_index >= number_room: - print("fin du donjon !") - break - room = rooms[level.current_room_index] - print(f"Pièce actuelle : {level.current_room_index}") - if room is not None: - for mob in room: - print(f"Un {mob.name} est devant toi !") - match action_menu([Action.COMBAT, Action.FUIR]): - case Action.COMBAT: - level.combat(mob, player) - if player.current_pv <= 0: - print("!!!!!!!!! Joueur mort !!!!!!!!!!") - break - if mob.current_pv == 0: - print(f"Le {mob.name} est mort !!") - case Action.FUIR: - print("Tu fuis la pièce") - else: - print("\n ------ Pièce vide ------ \n") - player.current_pv = player.max_pv - level.current_room_index += 1 - case Action.QUITTER: - level.exit_level = False - print(f"Au revoir {player.name} !") + play_donjon(level) + + +# Exemple d'utilisation +if __name__ == "__main__": + app("Jamin")