From 73b918f2f1a19528d03704d62fd2dcf2eddfa2b1 Mon Sep 17 00:00:00 2001 From: anthony-melin Date: Fri, 17 Jul 2026 21:13:12 +0200 Subject: [PATCH] =?UTF-8?q?=F0=9F=9A=A7=20wip=20refactoring=20mob?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/elironwars/app.py | 14 +++++++++++--- src/elironwars/level.py | 7 ++----- src/elironwars/mobs_utils.py | 27 +++++++++------------------ 3 files changed, 22 insertions(+), 26 deletions(-) diff --git a/src/elironwars/app.py b/src/elironwars/app.py index c9172fe..413cc28 100644 --- a/src/elironwars/app.py +++ b/src/elironwars/app.py @@ -1,9 +1,9 @@ import sys -from elironwars.mob.base_mob import BaseMob -from elironwars.mob.character_builder import CharacterBuilder from .level import Level from .menu import Action, action_menu +from .mob.base_mob import BaseMob +from .mob.character_builder import CharacterBuilder def play_room(room: list[BaseMob], level: Level) -> int: @@ -50,7 +50,15 @@ def app() -> None: print(loaded_character) - level = Level(2, loaded_character) + # Créer des instances de BaseMob + yanaar = BaseMob("Yanaar", 15, 2, 1, 3, 2) + ulnarain = BaseMob("Ulnarain", 20, 3, 3, 2, 2) + skroll = BaseMob("Skroll", 25, 5, 3, 1, 2) + + # Liste d'instances de BaseMob (au lieu d'un ensemble pour autoriser des doublons) + mobs_list = [yanaar, skroll, ulnarain] + + level = Level(2, loaded_character, mobs_list) print(f"Nombre de pièce dans le donjon : {len(level.rooms)}") play_donjon(level) diff --git a/src/elironwars/level.py b/src/elironwars/level.py index 549c9fe..1eb3373 100644 --- a/src/elironwars/level.py +++ b/src/elironwars/level.py @@ -1,16 +1,13 @@ -""" Class Level """ -import random - from .mobs_utils import generate_random_mob_list, generate_random_rooms class Level: """ Class Level """ - def __init__(self, difficulty, player): + def __init__(self, difficulty, player, mob_list): """ Chargement du niveau """ print("Loading Level") - self.mobs_in_level = generate_random_mob_list(random.randint(2, difficulty)) + self.mobs_in_level = generate_random_mob_list(mob_list, difficulty) self.exit_level = True self.player = player self.rooms = generate_random_rooms(self.mobs_in_level, difficulty) # Liste des pièces du niveau diff --git a/src/elironwars/mobs_utils.py b/src/elironwars/mobs_utils.py index fd8b399..94b5596 100644 --- a/src/elironwars/mobs_utils.py +++ b/src/elironwars/mobs_utils.py @@ -1,28 +1,19 @@ import random -from elironwars.mob.base_mob import BaseMob -# Créer des instances de BaseMob -yanaar = BaseMob("Yanaar", 15, 2, 1, 3, 2) -ulnarain = BaseMob("Ulnarain", 20, 3, 3, 2, 2) -skroll = BaseMob("Skroll", 25, 5, 3, 1, 2) - -# Liste d'instances de BaseMob (au lieu d'un ensemble pour autoriser des doublons) -mobs_list = [yanaar, skroll, ulnarain] - - -def generate_random_mob_list(max_mobs): +def generate_random_mob_list(mob_list, max_mobs): """ - Génère une liste aléatoire de mobs à partir de la liste des instances disponibles. + Génère une liste aléatoire de mobs à partir de la liste fournie. - :param max_mobs: Le nombre maximum de mobs dans la liste générée. - :return: Une liste de mobs sélectionnés aléatoirement. + :param mob_list: Liste de mob a choisir aleatoirement. + :param max_mobs: Le nombre maximum de mobs dans la liste générée. + :return: Une liste de mobs sélectionnés aléatoirement. """ if max_mobs <= 0: return [] num_mobs = random.randint(2, max_mobs) - selected_mobs = [random.choice(mobs_list) for _ in range(num_mobs)] + selected_mobs = [random.choice(mob_list) for _ in range(num_mobs)] return selected_mobs @@ -30,9 +21,9 @@ def generate_random_rooms(mobs_in_level, num_rooms): """ Génère un nombre spécifié de pièces et y distribue les mobs disponibles. - :param mobs_in_level: Liste des mobs disponibles pour le niveau. - :param num_rooms: Nombre total de pièces à générer. - :return: Une liste de pièces, chaque pièce contenant un ou plusieurs mobs, ou étant vide si aucun mob n'est disponible. + :param mobs_in_level: Liste des mobs disponibles pour le niveau. + :param num_rooms: Nombre total de pièces à générer. + :return: Une liste de pièces, chaque pièce contenant un ou plusieurs mobs, ou étant vide si aucun mob n'est disponible. """ rooms = []