2026-07-06 14:53:21 +02:00
# Projet : Créer un "Livre dont vous êtes le héros"
2025-01-23 22:36:44 +01:00
> Objectif : écrire une histoire où les choix du lecteur influencent le déroulement de l'intrigue.
---
## Objectifs du projet
1. Comprendre comment utiliser les **arbres** pour structurer une narration.
2. Appliquer les concepts de **POO** pour modéliser des chapitres et des choix.
3. Développer un programme qui raconte une histoire interactive.
---
## Étape 1 : L'arbre narratif
Un **livre dont vous êtes le héros** peut être représenté par un **arbre** :
- Chaque **chapitre** est un **nœud** .
- Chaque **choix** est une **branche** menant à un autre nœud.
- Une **fin d'histoire** correspond à une **feuille** (un nœud sans enfants).
### Exemple d'arbre
Voici un exemple d'arbre narratif simple :
```
Introduction
/ \
Aller au nord Aller au sud
| |
Explorer la cabane Trouver un trésor (fin)
|
Fin
```
Dans cet arbre :
- Le chapitre d'introduction propose 2 choix.
- Chaque choix mène à un autre chapitre (ou à une fin).
---
## Étape 2 : Modélisation avec la POO
On va utiliser des **classes** pour structurer notre code.
### Classe `Chapitre`
Un chapitre représente une étape de l'histoire. Voici ses caractéristiques :
- **Attributs** :
- `texte` : le contenu du chapitre.
- `choix` : un dictionnaire qui associe une option à un chapitre suivant.
- **Méthodes** :
- `ajouter_choix(choix, chapitre_suivant)` : ajoute un choix possible.
- `suivant(choix)` : retourne le chapitre correspondant au choix.
### Classe `Livre`
Le livre gère toute l'histoire. Voici ses caractéristiques :
- **Attributs** :
- `chapitre_depart` : le premier chapitre de l'histoire.
- **Méthodes** :
- `lancer()` : démarre l'histoire et permet au lecteur de faire ses choix.
---
## Étape 3 : Implémentation
Voici un **squelette de code** à compléter pour commencer.
### Classe `Chapitre`
```python
class Chapitre :
def __init__ ( self , texte ):
self . texte = texte
self . choix = {} # Dictionnaire pour les choix possibles
def ajouter_choix ( self , choix , chapitre_suivant ):
self . choix [ choix ] = chapitre_suivant
def suivant ( self , choix ):
return self . choix . get ( choix , None )
```
### Classe `Livre`
```python
class Livre :
def __init__ ( self , chapitre_depart ):
self . chapitre_depart = chapitre_depart
def lancer ( self ):
chapitre_actuel = self . chapitre_depart
while chapitre_actuel :
print ( chapitre_actuel . texte )
if not chapitre_actuel . choix :
print ( "Fin de l'histoire." )
break
print ( " \n Choix disponibles :" )
for i , choix in enumerate ( chapitre_actuel . choix . keys (), 1 ):
print ( f " { i } . { choix } " )
choix_utilisateur = input ( "Votre choix : " )
chapitre_actuel = chapitre_actuel . suivant ( choix_utilisateur )
```
---
## Étape 4 : Construire une petite histoire
Essayons de créer une histoire simple avec ces classes.
### Exemple
```python
# Création des chapitres
intro = Chapitre ( "Vous êtes dans une forêt sombre. Que voulez-vous faire ?" )
aller_vers_nord = Chapitre ( "Vous trouvez une cabane abandonnée." )
aller_vers_sud = Chapitre ( "Vous tombez dans un trou et trouvez un trésor. Fin !" )
explorer_cabane = Chapitre ( "Vous entrez dans la cabane. Fin !" )
# Ajout des choix
intro . ajouter_choix ( "Aller vers le nord" , aller_vers_nord )
intro . ajouter_choix ( "Aller vers le sud" , aller_vers_sud )
aller_vers_nord . ajouter_choix ( "Explorer la cabane" , explorer_cabane )
# Création du livre et lancement
livre = Livre ( intro )
livre . lancer ()
```
---
## Étape 5 : Ajouter des fonctionnalités avancées
Pour ceux qui veulent aller plus loin, voici des idées de fonctionnalités bonus :
1. **Inventaire** : Ajoutez une classe `Personnage` pour gérer un inventaire, des points de vie, etc. (Revoir l'évaluation de POO...)
2. **Sauvegarde** : Implémentez un système de sauvegarde pour reprendre l’ histoire au dernier chapitre. (Quelle structure ?)
3. **Génération aléatoire** : Ajoutez des éléments imprévisibles dans l’ histoire grâce à des choix aléatoires (rappel : `random` ).
---
## Étape 6 : Présentation des projets
1. Travaillez en groupes pour créer vos propres livres interactifs.
2. Testez vos histoires entre vous pour identifier les bugs.
3. **Présentation finale** pour comparer les projets.
---
Auteur : Florian Mathieu
2026-08-11 23:29:02 +02:00
Licence CC BY-SA
2025-01-23 22:36:44 +01:00
2026-08-11 23:29:02 +02:00
<a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/"><img alt="Licence Creative Commons" style="border-width:0" src="https://i.creativecommons.org/l/by-sa/4.0/88x31.png" /></a> <br />Ce cours est mis à disposition selon les termes de la <a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/">Licence Creative Commons Attribution - Partage dans les Mêmes Conditions 4.0 International</a>.