====== 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]]