🚧 wip code split
This commit is contained in:
@@ -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,45 +39,26 @@ 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")
|
||||
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]
|
||||
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, player)
|
||||
if player.current_pv <= 0:
|
||||
level.combat(mob, level.player)
|
||||
if level.player.current_pv <= 0:
|
||||
print("!!!!!!!!! Joueur mort !!!!!!!!!!")
|
||||
break
|
||||
if mob.current_pv == 0:
|
||||
@@ -81,8 +67,36 @@ if __name__ == "__main__":
|
||||
print("Tu fuis la pièce")
|
||||
else:
|
||||
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
|
||||
case Action.QUITTER:
|
||||
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")
|
||||
|
||||
Reference in New Issue
Block a user