Quel est selon vous le meilleur moyen de décrire un sous-élément dans un objet?!
Peut-être que c’est super évident et que je passe à côté d’un éléphant sans le voir, mais là comme ça, ben j’ai pas trop d’idée…
Genre dans Catapole, il y a cette lampe… qui contient une grille (le « tamis ») qui n’a pas d’usage particulier, mais ça serait bien de pouvoir mettre un texte spécial quand on l’examine.
Encore que dans le cas de la lampe, ptet qu’en en faisant un containeur transparent, je peux arranger la chose de manière assez logique.
Tu posais l’autre coup la question de ce que pouvait apporter Inform 7
Il y a un truc pas mal dans I7 qui s’appelle « is part of », ce qui permet de créer ce genre d’association, et si on déplace le parent (à supposer que c’est possible), cela déplace l’enfant avec.
Mais je ne dis pas cela pour te faire bisquer, car I7 utilisant comme support I6, on peut examiner ce qui a été créé pour l’implémenter dans le code intermédiaire en I6 :
Property component_child; ! new in I7: forest structure holding "part of" relation
Property component_parent; ! new in I7
Property component_sibling; ! new in I7
ensuite pour un objet, par exemple la lampe du phare dans mon jeu qui contient une ampoule :
Object -> O60_lampephare ""
/.../
with name 'lampephare'
/.../
with component_child O61_ampoule
Il y a une fonction pour attacher ou détacher une partie d’un objet :
[code]
[ MakePart P Of First;
if (parent(P)) remove P; give P ~worn;
if (Of == nothing) { DetachPart(P); return; }
if (P.component_parent) DetachPart(P);
P.component_parent = Of;
First = Of.component_child;
Of.component_child = P; P.component_sibling = First;
];
[ DetachPart P From Daddy O;
Daddy = P.component_parent; P.component_parent = nothing;
if (Daddy == nothing) { P.component_sibling = nothing; return; }
if (Daddy.component_child == P) {
Daddy.component_child = P.component_sibling;
P.component_sibling = nothing; return;
}
for (O = Daddy.component_child: O: O = O.component_sibling)
if (O.component_sibling == P) {
O.component_sibling = P.component_sibling;
P.component_sibling = nothing; return;
}
];[/code]
Ainsi si on veut attacher un objet à un autre il suffit d’appeler :
MakePart(objet1,objet2);
C’est pas garanti qu’il ne faille pas autre chose, mais au moins cela donne une piste de travail et de recherches…
Par contre c’est indiqué que le joueur ne peut examiner une partie de son corps, mais peut-être que depuis 2006 cela a évolué, car je peux créer des objets en disant « … is part of the player. »