====== 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|}} ===== 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]]) | 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. ===== 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 ''. 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. Un familier est un animal. Un familier est affamé. -- défaut : tout familier est affamé… * ''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 : Un chaton est un familier affamé. 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''. 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 [[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 ]%%'' {{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}}