cli & console output #4

Merged
bbaudouin merged 9 commits from ux into develop 2026-07-22 07:57:32 +01:00
2 changed files with 22 additions and 16 deletions
Showing only changes of commit 33052979f0 - Show all commits
+16 -14
View File
@@ -2,8 +2,9 @@ import logging
import os import os
import sys import sys
from .console import UI
from .level import Level from .level import Level
from .menu import Action, action_menu from .menu import Action
from .mob import BaseMob, load_character from .mob import BaseMob, load_character
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
@@ -12,22 +13,23 @@ logger = logging.getLogger(__name__)
def play_room(room: list[BaseMob], level: Level) -> int: def play_room(room: list[BaseMob], level: Level) -> int:
if room is None: if room is None:
logger.info('Empty room') logger.info('Empty room')
print("\n ------ Pièce vide ------ \n") UI.empty_room()
return 1 return 1
for mob in room: for mob in room:
logger.info('Meet mob %s', mob.name) logger.info('Meet mob %s', mob.name)
print(f"Un {mob.name} est devant toi !") UI.meet_mob(mob)
match action_menu([Action.COMBAT, Action.FUIR]): match UI.action_menu([Action.COMBAT, Action.FUIR]):
case Action.COMBAT: case Action.COMBAT:
level.combat(mob, level.player) pvs = level.combat(mob, level.player)
UI.fight_pvs(level.player, mob, pvs)
if level.player.current_pv <= 0: if level.player.current_pv <= 0:
print("!!!!!!!!! Joueur mort !!!!!!!!!!") UI.player_dead()
sys.exit(0) sys.exit(0)
if mob.current_pv == 0: if mob.current_pv == 0:
print(f"Le {mob.name} est mort !!") UI.mob_dead(mob)
case Action.FUIR: case Action.FUIR:
print("Tu fuis la pièce") UI.run_away()
return 0 return 0
return 1 return 1
@@ -35,12 +37,12 @@ def play_room(room: list[BaseMob], level: Level) -> int:
def play_donjon(level: Level) -> None: def play_donjon(level: Level) -> None:
while level.exit_level: while level.exit_level:
print(f"Pièce actuelle : {level.current_room_index}") UI.entering_room(level.current_room_index)
match action_menu([Action.PIECE_SUIVANTE, Action.QUITTER]): match UI.action_menu([Action.PIECE_SUIVANTE, Action.QUITTER]):
case Action.PIECE_SUIVANTE: case Action.PIECE_SUIVANTE:
if level.current_room_index >= len(level.rooms): if level.current_room_index >= len(level.rooms):
logger.info('Exiting last room') logger.info('Exiting last room')
print("fin du donjon !") UI.last_room()
break break
logger.info('Entering next room') logger.info('Entering next room')
level.current_room_index += play_room(level.rooms[level.current_room_index], level) level.current_room_index += play_room(level.rooms[level.current_room_index], level)
@@ -48,7 +50,7 @@ def play_donjon(level: Level) -> None:
case Action.QUITTER: case Action.QUITTER:
level.exit_level = False level.exit_level = False
logger.info('Leaving game') logger.info('Leaving game')
print(f"Au revoir {level.player.name} !") UI.leave(level.player)
def app() -> None: def app() -> None:
@@ -60,7 +62,7 @@ def app() -> None:
if not loaded_character: if not loaded_character:
sys.exit(-1) sys.exit(-1)
print(loaded_character) UI.select_player(loaded_character)
# Créer des instances de BaseMob # Créer des instances de BaseMob
yanaar = BaseMob("Yanaar", 15, 2, 1, 3, 2) yanaar = BaseMob("Yanaar", 15, 2, 1, 3, 2)
@@ -71,7 +73,7 @@ def app() -> None:
mobs_list = [yanaar, skroll, ulnarain] mobs_list = [yanaar, skroll, ulnarain]
level = Level(2, loaded_character, mobs_list) level = Level(2, loaded_character, mobs_list)
print(f"Nombre de pièce dans le donjon : {len(level.rooms)}") UI.entering_donjon(level)
play_donjon(level) play_donjon(level)
+6 -2
View File
@@ -20,6 +20,7 @@ class Level:
logger.debug("Level Loaded") logger.debug("Level Loaded")
def combat(self, mob, player): def combat(self, mob, player):
pvs = []
while mob.current_pv > 0 and player.current_pv > 0: while mob.current_pv > 0 and player.current_pv > 0:
if mob.speed > player.speed: if mob.speed > player.speed:
mob.perform_attack(player) mob.perform_attack(player)
@@ -27,5 +28,8 @@ class Level:
else: else:
player.perform_attack(mob) player.perform_attack(mob)
mob.perform_attack(player) mob.perform_attack(player)
print(f"{player.name} - {player.current_pv} PV") pvs.append({
print(f"{mob.name} - {mob.current_pv} PV") 'player': player.current_pv,
'mob': mob.current_pv
})
return pvs