🚧 wip code split

This commit is contained in:
2026-07-16 20:17:33 +02:00
parent bc78bc04d6
commit f745bd1f3d
+40 -26
View File
@@ -2,6 +2,7 @@ import os
import sys import sys
from enum import Enum from enum import Enum
from base_mob import BaseMob
from character_builder import CharacterBuilder from character_builder import CharacterBuilder
from level_one import Level from level_one import Level
@@ -21,6 +22,10 @@ class Action(Enum):
return self.value[1] 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: def action_menu(actions_autorisees: list[Action] = None) -> Action:
"""Affiche le menu et retourne une action valide.""" """Affiche le menu et retourne une action valide."""
@@ -34,45 +39,26 @@ def action_menu(actions_autorisees: list[Action] = None) -> Action:
try: try:
choix = int(input("\nChoix : ")) choix = int(input("\nChoix : "))
clear_console()
for action in actions_autorisees: for action in actions_autorisees:
if action.code == choix: if action.code == choix:
return action return action
print("Mauvais choix") print("Mauvais choix")
except ValueError: except ValueError:
clear_console()
print("Veuillez saisir un nombre.") print("Veuillez saisir un nombre.")
# Exemple d'utilisation def play_room(room: list[BaseMob], level: Level) -> None:
if __name__ == "__main__":
loaded_character = CharacterBuilder.load_character("Jamin")
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}")
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}") print(f"Pièce actuelle : {level.current_room_index}")
if room is not None: if room is not None:
for mob in room: for mob in room:
print(f"Un {mob.name} est devant toi !") print(f"Un {mob.name} est devant toi !")
match action_menu([Action.COMBAT, Action.FUIR]): match action_menu([Action.COMBAT, Action.FUIR]):
case Action.COMBAT: case Action.COMBAT:
level.combat(mob, player) level.combat(mob, level.player)
if player.current_pv <= 0: if level.player.current_pv <= 0:
print("!!!!!!!!! Joueur mort !!!!!!!!!!") print("!!!!!!!!! Joueur mort !!!!!!!!!!")
break break
if mob.current_pv == 0: if mob.current_pv == 0:
@@ -81,8 +67,36 @@ if __name__ == "__main__":
print("Tu fuis la pièce") print("Tu fuis la pièce")
else: else:
print("\n ------ Pièce vide ------ \n") print("\n ------ Pièce vide ------ \n")
player.current_pv = player.max_pv
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 level.current_room_index += 1
case Action.QUITTER: case Action.QUITTER:
level.exit_level = False level.exit_level = False
print(f"Au revoir {player.name} !") 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)
print(f"Nombre de pièce dans le donjon : {len(level.rooms)}")
play_donjon(level)
# Exemple d'utilisation
if __name__ == "__main__":
app("Jamin")