Files
2026-05-19 23:43:47 +02:00

103 lines
3.6 KiB
Markdown

# Jeu de Rôle - Niveau
Ce projet est une implémentation d'un système de niveau pour un jeu de rôle. Il permet de générer des pièces avec des mobs (monstres) et de naviguer entre ces pièces.
## Structure du Projet
- **Level**: La classe principale qui représente un niveau dans le jeu.
- **BaseMob**: La classe représentant les monstres (mobs).
- **generate_random_rooms**: Une fonction pour générer des pièces avec des mobs.
## Fonctionnalités
1. **Génération de Niveau** :
- Charge un nombre aléatoire de mobs en fonction de la difficulté.
- Génère des pièces et y répartit les mobs disponibles.
2. **Navigation entre les Pièces** :
- Permet à l'utilisateur de naviguer entre les pièces ou de quitter le jeu.
## Exemple d'utilisation
```python
#app.py
if __name__ == "__main__":
loaded_character = CharacterBuilder.load_character("Jamin")
if loaded_character:
print(loaded_character)
level = Level(2, CharacterBuilder.load_character("Jamin"))
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():
case 1:
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():
case 2:
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 3:
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 4:
level.exit_level = False
print(f"Au revoir {player.name} !")
case _:
print("Mauvais choix")
```
## Installation
Pour exécuter ce projet, vous aurez besoin de Python 3.7 ou supérieur.
```bash
python3 app.py
```
## Personnalisation du CharacterBuilder
Le `CharacterBuilder` peut être personnalisé pour utiliser différentes implémentations de sauvegarde et de chargement selon vos besoins.
Cette personnalisation se fait simplement en définissant une variable d'environnement avant de lancer votre script Python.
### Variable d'environnement : `ELIRON_BUILDER`
- **Nom** : `ELIRON_BUILDER`
- **Valeur possible** :
- `"pydantic"` : Utilise des implementations basées sur `pydantic`.
- Toute autre valeur ou absence de variable : Utilise les fonctions par défaut.
> ⚠️ **Important** : Pour utiliser le builder pydantic, vous devez avoir installé le package `pydantic` au préalable :
> ```bash
> pip install pydantic
> ```
### Exemple d'utilisation sous Linux / macOS
```bash
# Pour utiliser l'implémentation pydantic
export ELIRON_BUILDER=pydantic
python app.py
# Pour utiliser l'implémentation par defaut
unset ELIRON_BUILDER
python app.py