Doc Donjon FI (v3)

Éditeur de fictions interactives avec interpréteur

Outils pour utilisateurs

Outils du site


reference:definitions:classes

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
reference:definitions:classes [2022/10/11 23:04] jonathanreference:definitions:classes [2026/06/20 10:46] (Version actuelle) – modification externe 127.0.0.1
Ligne 1: Ligne 1:
 ====== Les classes d’éléments (types) ====== ====== Les classes d’éléments (types) ======
 +
 +Chaque élément de votre jeu appartient à un **type** (on dit aussi une //classe//) : un lieu, un objet, un animal, un contenant… Le type détermine le comportement par défaut de l’élément (un contenant peut s’ouvrir, un support reçoit des objets //sur// lui, un animal est vivant, etc.).
  
 {{:reference:definitions:donjontypes.png|}} {{:reference:definitions:donjontypes.png|}}
 +
 +===== Les types intégrés =====
 +
 +Le moteur fournit une hiérarchie de types. Les plus spécifiques héritent des plus généraux : un ''animal'' est aussi un ''objet'', donc tout ce qui vaut pour un objet vaut pour un animal.
 +
 +^ Type           ^ Hérite de ^ Rôle                                                            ^
 +| ''lieu''       | —         | un endroit où l’on se déplace                                    |
 +| ''objet''      | —         | toute chose manipulable ou décrite                               |
 +| ''vivant''     | objet     | base des êtres vivants                                           |
 +| ''animal''     | vivant    | une créature                                                     |
 +| ''personne''   | vivant    | un personnage (PNJ)                                              |
 +| ''contenant''  | objet     | contient des objets //dans// lui                                |
 +| ''support''    | objet     | reçoit des objets //sur// lui                                   |
 +| ''porte''      | objet     | sépare deux lieux, s’ouvre / se ferme                           |
 +| ''obstacle''   | objet     | bloque un passage                                               |
 +| ''fond''       | objet     | un décor présent dans plusieurs lieux (voir [[reference:definitions:fonds|Fonds]]) |
 +
 +<code donjon>
 +La cuisine est un lieu.
 +Le couteau est un objet dans la cuisine.
 +Le chat est un animal dans la cuisine.
 +Le placard est un contenant dans la cuisine.
 +</code>
 +
 +===== Créer son propre type =====
 +
 +Vous pouvez définir un **type personnalisé** qui hérite d’un type existant, avec la formule ''Un X est un <type>''. Tous les éléments de ce type partagent alors le comportement du type parent — et tout ce que vous déclarez //sur le type// devient le **défaut** de ses instances.
 +
 +<code donjon>
 +Un familier est un animal.
 +Un familier est affamé.            -- défaut : tout familier est affamé…
 +</code>
 +
 +  * ''Un familier est un animal.'' → un familier est aussi un animal (donc un objet).
 +  * ''Un familier est affamé.'' → chaque familier est ''affamé'' par défaut.
 +  * Une instance peut **surcharger** ce défaut : ''Le chien est repu.''.
 +
 +L’état ''affamé'' utilisé ci-dessus est un [[reference:definitions:etats_personnalises|état personnalisé]] : il doit être déclaré avant (ici une bascule ''affamé'' / ''repu'').
 +
 +==== Héritage en chaîne ====
 +
 +Un type personnalisé peut lui-même servir de parent à un autre. L’héritage se propage sur toute la chaîne, et on peut poser un défaut **directement dans la déclaration** du sous-type :
 +
 +<code donjon>
 +Un chaton est un familier affamé.
 +</code>
 +
 +Un ''chaton'' est alors aussi un ''familier'', un ''animal'' (et un ''objet''), et il est ''affamé'' par défaut.
 +
 +===== Utiliser un type =====
 +
 +Le nom du type sert ensuite à viser **tous** ses éléments à la fois : compter ([[reference:texte:balises_dynamiques|''%%[nombre de familiers]%%'']]), tester ''si X est un familier'', ou écrire une règle ''avant examiner un familier''.
 +
 +<file donjon wiki_definitions_classe_personnalisee>
 +affamé et repu forment une bascule.
 +
 +Un familier est un animal.
 +Un familier est affamé.
 +
 +Un chaton est un familier.
 +
 +La maison est un lieu.
 +Le chat est un familier dans la maison.
 +Le chien est un familier dans la maison.
 +Le chien est repu.
 +Le minou est un chaton dans la maison.
 +Le joueur est dans la maison.
 +
 +action recenser:
 +  dire "Familiers : [nombre de familiers].".
 +  si le chat est affamé, dire "Le chat est affamé (défaut du type).".
 +  si le chien est repu, dire "Le chien est repu (défini sur l'instance).".
 +  si le minou est un familier, dire "Le minou (chaton) est aussi un familier.".
 +  si le minou est affamé, dire "Le minou est affamé (défaut hérité en chaîne).".
 +fin action
 +
 +règle avant commencer le jeu:
 +  dire "Essayez : {/recenser/}.".
 +fin règle
 +</file>
 +
 +[[djnc>wiki_definitions_classe_personnalisee|tester cet exemple]]
 +
 +===== Voir aussi =====
 +
 +  * [[reference:definitions:objets|Objets]] et [[reference:definitions:lieux|Lieux]]
 +  * [[reference:definitions:pnj|Personnages (PNJ)]] — le type ''personne''
 +  * [[reference:definitions:etats_personnalises|États personnalisés]] — défauts de type et bascules
 +  * [[reference:definitions:proprietes_personnalisees|Propriétés personnalisées]]
 +  * [[reference:texte:balises_dynamiques|Balises dynamiques]] — ''%%[nombre de <type>]%%''
 +
 +{{tag>classe classes type types element élément elements éléments heritage héritage type_personnalise type_personnalisé contenant support lieu objet animal personne vivant porte obstacle fond defaut défaut}}
 +
reference/definitions/classes.1665522275.txt.gz · Dernière modification : (modification externe)