====== 8. Découper son scénario ======
Quand un scénario dépasse les quelques centaines de lignes, le maintenir dans un seul fichier devient malcommode : on perd ses repères, les diffs deviennent illisibles, et le travail à plusieurs vire au cauchemar de fusion. L’instruction ''inclure'' permet de **découper un scénario** en plusieurs fichiers ''.djn'' tout en gardant la simplicité d’un seul scénario à compiler.
===== L’idée =====
Au compilateur, l’instruction ''inclure "X.djn".'' signifie simplement : « remplacez cette ligne par le contenu de X.djn ». La résolution se fait //avant la compilation//, le moteur ne voit qu’un grand fichier reconstitué. Vous gardez ainsi les bénéfices d’un découpage logique (intro, chaque chapitre, finale) sans payer le prix d’un système d’imports complexe.
===== Trois fichiers, un seul scénario =====
Le **fichier racine** ne contient que les méta et les directives ''inclure'' :
-- Fichier racine : 08_a_inclure_principal.djn
Le titre du jeu est "L’Express de 23h47 — découpé".
L’auteur du jeu est "Voyageur·euse de l’ombre".
inclure "08_a_inclure_intro.djn".
inclure "08_a_inclure_finale.djn".
Le joueur se trouve dans le compartiment sept.
Le fichier **intro** contient les lieux et le message d’ouverture :
-- Fichier inclus : 08_a_inclure_intro.djn
Le compartiment sept est un lieu.
Sa description est "Le compartiment sept, ses banquettes de velours, sa lampe verte.".
Le couloir est un lieu à l’ouest du compartiment sept.
Sa description est "Le couloir lambrissé du Train-Couchettes.".
règle avant commencer le jeu:
dire "Bienvenue. Ce scénario est découpé en trois fichiers — ouvrez-les côte à côte dans l’éditeur pour voir comment l’instruction ''inclure'' les recolle.".
fin règle
Le fichier **finale** contient l’objet à examiner et la règle de fin :
-- Fichier inclus : 08_a_inclure_finale.djn
La valise de cuir est un objet dans le compartiment sept.
Sa description est "Une valise patinée, qui semble attendre son propriétaire.".
règle après examiner la valise de cuir:
dire "Vous avez consulté l’objet déclaré dans le fichier ''finale''. Les trois fichiers ont bien été assemblés en un seul scénario.".
terminer le jeu.
fin règle
📝 **Note** : avec les ''inclure'', pas moyen de mettre un lien « tester cet exemple » qui marche automatiquement. Ouvrez les trois fichiers vous-même dans Donjon-Créer, ou éditez-les en local avec l’extension VS Code //donjon-fi-compagnon//.
===== Quelques règles à respecter =====
* Les **chemins** sont relatifs au //fichier racine//, pas au fichier qui porte l’instruction ''inclure''. Le compilateur résout tout depuis la racine.
* La résolution est **récursive** : un fichier inclus peut lui-même utiliser ''inclure''.
* Les **cycles** sont détectés (''a.djn'' qui inclut ''b.djn'' qui inclut ''a.djn'' produit une erreur explicite).
* La **profondeur maximale** d’imbrication est de 32 niveaux — largement assez pour tous les cas réels.
* Les **erreurs de compilation** pointent vers le fichier d’origine et sa ligne d’origine, pas vers le résultat aplatit.
===== À retenir =====
* Découpage logique d’un gros scénario en plusieurs fichiers ''.djn'' : ''inclure "X.djn".''.
* Le fichier racine est celui qu’on lance ; il contient ''Le titre du jeu est ...'', les directives ''inclure'', et la position du joueur.
* Les fichiers inclus //ne sont pas autonomes// : ils ne tiennent pas debout seuls (pas de titre, pas de position de démarrage).
* L’extension VS Code //donjon-fi-compagnon// gère la navigation entre fichiers inclus et affiche les diagnostics au bon endroit.
Suite : [[tutoriels:train:partie9_jeu_complet|9. L’escape game complet]]