← [[tutoriels:cirque:partie2_personnages|2. Les artistes]]
====== 3. Le chat sorcier et les animaux ======
Un cirque sans bête, c’est un théâtre. On installe maintenant **Anatole le tigre** dans la cage de Lucia, et — surtout — on rencontre enfin **Crépu**, le chat sorcier d’Aurélien. Crépu sait des choses. Il en dira la moitié. À l’envers.
===== La classe ''animal'' =====
Côté DSL, un animal se déclare exactement comme une personne, avec la classe ''animal'' à la place :
Anatole est un animal dans la roulotte de Lucia.
Sa description est "Anatole, le tigre vedette de Lucia. Pelage roux barré de noir, trois cents kilos de muscle assoupis.".
réaction d’Anatole:
dire "Anatole entrouvre un œil paresseux, vous renifle, et se rendort dans un long ronronnement de moteur diesel.".
fin réaction
[[djnc>wiki_tuto-cirque_03_a_anatole|tester cet exemple]]
Dans cet exemple, la commande ‘’parler à’’ est **refusée** par le moteur — **par défaut, un animal ne parle pas**, contrairement à une personne. Le bloc ‘’réaction’’ qu’on a écrit reste légitime (on pourra l’invoquer nous-mêmes dans une règle), mais la commande ‘’parler’’ n’y a pas accès tant que l’animal n’est pas marqué comme ‘’parlant’’.
> parler à Anatole
📚 Pour aller plus loin : [[reference:definitions:noms_autorises|Noms autorisés]], [[reference:definitions:objets|Classes d’objets]] (objet, personne, animal, vivant, …).
===== Un animal qui parle =====
Pour qu’un animal devienne interactif via ''parler à'', on lui ajoute explicitement l’état ''parlant''. C’est le cas de Crépu, qui n’est pas qu’un chat ordinaire :
Crépu est un animal parlant dans la roulotte du maître Aurélien.
Sa description est "Un vieux chat gris-ardoise au poil hirsute, un seul œil jaune ouvert, l’autre fermé en permanence. Une mèche blanche lui barre le front.".
réaction de Crépu:
dire "« Mmh. L’apprenti·e. On me l’avait promis. »".
fin réaction
[[djnc>wiki_tuto-cirque_03_b_crepu|tester cet exemple]]
> ℹ️ ''animal parlant'' combine la classe ''animal'' et l’état ''parlant''. On peut empiler classe et états dans une même déclaration ; on aurait pu écrire séparément ''Crépu est un animal.'' puis ''Crépu est parlant.''.
===== Les réactions structurées =====
Avec une réaction simple, Crépu répond toujours pareil. On veut mieux : qu’il **réagisse au sujet** que le joueur évoque, et qu’il ne se répète pas mot pour mot dès le deuxième passage. C’est le rôle des **réactions structurées**, qu’on enrichit ici de deux mécaniques :
* la **balise** ''[1ère fois]…[2e fois]…[puis]…[fin]'' pour faire varier un texte selon le nombre de fois où il a déjà été affiché ;
* un **bloc conditionnel** ''si … : … sinon : … fin si'' à l’intérieur d’une réaction.
Le moteur route selon la présence ou l'absence d'un sujet :
* sans sujet (''parler à Crépu'') → bloc ''basique''
* avec sujet (''parler à Crépu concernant X'' ou ''demander X à Crépu'') → bloc ''concernant X''
* sujet sans bloc dédié → bloc ''concernant un sujet inconnu''
réactions de Crépu:
basique:
dire "[1ère fois]« Mmh. L’apprenti·e. On me l’avait promis. »[2e fois]« Encore toi ? Bon, je t’écoute. »[puis]« Qu’est-ce que tu veux savoir aujourd’hui ? »[fin]".
concernant le tour:
si la roulotte de Lucia est visitée:
dire "« Le pas de côté. Une vieille recette de famille — enfin, de la famille de quelqu’un d’autre. Tu réuniras les quatre accessoires, puis tu réaliseras le tour. »".
sinon
dire "« Pas si vite. Il y a un tigre dans ce cirque que tu n’as pas encore regardé en face. »".
fin si
concernant Aurélien:
dire "« Aurélien ? Excellent élève, en son temps. Trop pressé d’apprendre. Comme toi. »".
concernant le miroir:
dire "« Le miroir est cassé, oui. Pas vraiment cassé — disons… mal ajusté. »".
concernant un sujet inconnu:
dire "« Ah. Cette question-là, je préfère y répondre plus tard. Beaucoup plus tard. »".
fin réactions
[[djnc>wiki_tuto-cirque_03_c_reactions|tester cet exemple]] — **état final du chapitre**.
Quelques commandes pour explorer les réactions de Crépu :
> parler à Crépu
> parler à Crépu
> parler à Crépu
> demander le tour à Crépu
> aller dans la roulotte de Lucia
> retourner dans la roulotte du maître Aurélien
> demander le tour à Crépu
> demander Aurélien à Crépu
> demander le miroir à Crépu
> demander la météo à Crépu
Les trois premiers ''parler à Crépu'' permettent de voir la balise ''[1ère fois] … [puis]'' en action. ''demander le tour à Crépu'' donne une réponse différente selon que la roulotte de Lucia a été visitée ou non. ''demander la météo'' déclenche ''concernant un sujet inconnu'' (aucun bloc dédié n'existe pour ce sujet).
Trois subtilités à noter dans ce bloc :
* Dans ''basique'', la **balise** ''[1ère fois]…[2e fois]…[puis]…[fin]'' insère trois variantes du même texte selon le nombre de passages — on évite la répétition mot pour mot sans avoir à écrire trois blocs séparés.
* Dans ''concernant le tour'', la **condition** ''si la roulotte de Lucia est visitée'' utilise l’état ''visité'' (positionné automatiquement par le moteur dès que le joueur entre une première fois dans le lieu). Crépu s’adapte donc à la progression du joueur sans qu’on ait besoin de gérer un état personnalisé. //(On vérifie volontairement la roulotte de Lucia plutôt que celle d’Aurélien : comme « demander à Crépu » oblige à être dans la même roulotte que lui, sa propre roulotte est forcément déjà visitée.)//
* ‘’concernant X’’ route vers ce bloc pour **n’importe quel intitulé** — qu’il soit déclaré dans le jeu ou non. Si aucun bloc ne correspond à ‘’X’’, c’est ‘’concernant un sujet inconnu’’ qui prend le relais.
> 🐾 //Crépu en dit beaucoup et rien à la fois. Notez ces phrases-là : elles prendront un sens différent au chapitre 7.//
📚 Pour aller plus loin : [[reference:routines:reaction:start|Les réactions structurées]], [[reference:texte:mise_en_forme|Balises 1ère fois / 2e fois / puis]].
===== Récapitulatif =====
* ''X est un animal …'' déclare un animal (mêmes propriétés qu’une personne).
* Par défaut, un animal **ne parle pas** : il faut ajouter l’état ''parlant'' pour que ''parler à'' devienne utilisable.
* **Forme courte** : ''réaction de X: dire "...". fin réaction'' → une seule réponse possible.
* **Forme structurée** : ''réactions de X: basique: … concernant Y: … concernant un sujet inconnu: … fin réactions''.
* Le moteur route ''parler à X'' vers ''basique'' et ''demander Y à X'' vers ''concernant Y''.
* À l’intérieur d’une réaction, on peut placer des **conditions** ''si … : … sinon : … fin si'' et des **balises** dynamiques comme ''[1ère fois]…[puis]…[fin]''.
Au prochain chapitre, on s’intéresse aux **accessoires de magie** qu’Aurélien a laissés dans sa roulotte — et on découvre comment leur attacher des **états personnalisés**.
Suite : [[tutoriels:cirque:partie4_accessoires|4. Les accessoires de magie]]
{{tag>tutoriel cirque animal animaux parlant parler réaction reaction réactions reactions structurée structuree basique concernant sujet demander condition si sinon balise première_fois premiere_fois}}