Files
TermNSI/Arbres/TP_LDVELH.md

4.9 KiB
Raw Permalink Blame History

Projet : Créer un "Livre dont vous êtes le héros"

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

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

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("\nChoix 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

# 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 lhistoire au dernier chapitre. (Quelle structure ?)
  3. Génération aléatoire : Ajoutez des éléments imprévisibles dans lhistoire 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

Licence CC BY NC

Licence Creative Commons
Ce cours est mis à disposition selon les termes de la Licence Creative Commons Attribution - Pas dUtilisation Commerciale - Partage dans les Mêmes Conditions 4.0 International.