103 lines
3.6 KiB
Markdown
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
|