[I7] afficher un message conditionel en description

Pour discuter des langages que nous utilisons pour réaliser nos jeux : problèmes, solutions, suggestions...

Modérateurs: Stormi, Otto Grimwald

[I7] afficher un message conditionel en description

Messagepar Landry le Dim Sep 02, 2018 6:55 pm

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.
Avatar de l’utilisateur
Landry
Investigateur débutant
 
Messages: 24
Inscription: Sam Déc 17, 2016 12:35 pm
Localisation: Lyon

Re: [I7] afficher un message conditionel en description

Messagepar filiaa le Lun Sep 03, 2018 12:36 pm

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
filiaa
Investigateur
 
Messages: 85
Inscription: Dim Fév 23, 2014 10:07 pm

Re: [I7] afficher un message conditionel en description

Messagepar Landry le Lun Sep 03, 2018 1:13 pm

Youpi ça marche ! Merci beaucoup !
Avatar de l’utilisateur
Landry
Investigateur débutant
 
Messages: 24
Inscription: Sam Déc 17, 2016 12:35 pm
Localisation: Lyon

Re: [I7] afficher un message conditionel en description

Messagepar Natrium le Lun Sep 03, 2018 5:47 pm

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.
Avatar de l’utilisateur
Natrium
Grand Ancien
 
Messages: 1148
Inscription: Mar Oct 04, 2011 11:18 pm

Re: [I7] afficher un message conditionel en description

Messagepar Landry le Ven Sep 07, 2018 9:00 pm

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 !
Avatar de l’utilisateur
Landry
Investigateur débutant
 
Messages: 24
Inscription: Sam Déc 17, 2016 12:35 pm
Localisation: Lyon


Retourner vers Questions techniques et aide pour votre code

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité

cron