Dans la description d’une pièce je voudrais écrire un phrase qui remplirait la condition suivante :
[if the room contains something] Blablabla.[end if]
Le problème de mon code c’est que la phrase s’affiche bien lorsqu’il y a des objets initialement au sol mais si je prends tous les objets, la phrase s’affiche toujours…
En fait je voudrais faire quelque chose du genre : s’il y a au moins un objet posé dans la pièce (pas une personne mais bien un objet) alors le message s’affiche sinon il ne s’affiche pas. ça semble tout bête mais je galère à trouver la bonne syntaxe depuis une demi-heure.
Essaye peut-être [if nom de la sallecontains anything that is not a person] , chez moi, ça marche. Et Inform refuse de compiler avec something d’ailleurs
Pour des précisions, le problème venait du fait que, comme tu l’as souligné, les personnes sont des choses, donc comptent dans les objets dans la pièce. Le verbe to contain ne prend en compte que les objets directement dans la pièce (ou le contenant) ; un endroit ne contient donc pas un objet porté par une personne. Si on veut que ça fonctionne aussi pour des objets qui sont indirectement dans quelque chose, il faut utiliser le verbe to enclose (englober en français) ; pour un endroit, c’est en revanche plus facile de simplement utiliser the location of.
Enfin, une petite technique qui peut permettre de rendre le code plus clair, surtout si la condition revient plusieurs fois dans la source :
Definition: a thing is inanimate if it is not a person.
Et maintenant il devient possible d’écrire :
if an inanimate thing is in the location
[Ou de manière équivalente]
if the location contains an inanimate thing
Les définitions sont des adjectifs que l’on ne peut que tester et pas changer (ça n’aurait pas de sens d’écrire now X is inanimate). Cf. section 6.4 de la doc.
Merci pour ces précisions, tes remarques sont toujours très avisées et j’en apprends beaucoup ! Je n’avais même pas saisi la nuance entre une définition et simplement un adjectif.
En tout cas merci pour la patiente dont tu fais preuve et la pédagogie de tes réponses !