Page 1 sur 1

[I7] afficher un message conditionel en description

MessagePosté: Dim Sep 02, 2018 6:55 pm
par Landry
Bonjour à tous,

Dans la description d'une pièce je voudrais écrire un phrase qui remplirait la condition suivante :
Code: Tout sélectionner
 [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... :roll:

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.

Re: [I7] afficher un message conditionel en description

MessagePosté: Lun Sep 03, 2018 12:36 pm
par filiaa
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

Re: [I7] afficher un message conditionel en description

MessagePosté: Lun Sep 03, 2018 1:13 pm
par Landry
Youpi ça marche ! Merci beaucoup !

Re: [I7] afficher un message conditionel en description

MessagePosté: Lun Sep 03, 2018 5:47 pm
par Natrium
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 :

Code: Tout sélectionner
Definition: a thing is inanimate if it is not a person.

Et maintenant il devient possible d'écrire :

Code: Tout sélectionner
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.

Re: [I7] afficher un message conditionel en description

MessagePosté: Ven Sep 07, 2018 9:00 pm
par Landry
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 !