Bonjour,
C’est de ma faute, bien sûr, mais où ? Voilà : je ne veux pas que le tapis du salon puisse être poussé deux fois, alors j’ai pondu ça :
Le tapis is a thing.
Le tapis is in Salon.
Le tapis has a number called the carpetPushed.
The carpetPushed is 0.
-----------
Instead of pushing tapis:
if the carpetPushed is 0
begin;
say "Une trappe apparaît. Elle était dissimulée sous le tapis !";
now carpetPushed is 1;
otherwise;
say "Cela ne sert à rien.";
end if.
carpetPushed est un identifieur unique.
A l’exécution Inform ne signale aucune erreur de syntaxe mais se comporte toujours comme si carpetPushed n’était pas à zéro. Et pourtant j’ai vérifié avec un showme avant et après ???
Merci,
Thierry
Je trouve ça étrange que ça compile. Je pense que c’est un bug de cette version d’Inform. En fait, ton erreur est qu’il faut toujours bien indiquer à quel objet appartient le nombre.
if carpetpushed of le tapis est 0:
En d’autres mots, ce qu’il faut, c’est « tapis.carpetpushed », pas juste « carpetpushed ». D’ailleurs, si on ajoute dans ton code, juste avant la condition :
showme carpetpushed;
showme carpetpushed of tapis;
ça montre un truc bizarre pour le second, ce qui n’est pas normal.
Ceci étant, comme ce nombre ne peut avoir que deux valeurs, il vaut mieux utiliser une propriété « either/or » (faut que je trouve une traduction pour ça…) :
[code]Le tapis can be pushed. Le tapis is not pushed.
Instead of pushing tapis:
if le tapis is not pushed:
say « Une trappe apparaît. Elle était dissimulée sous le tapis ! »;
now le tapis is pushed;
otherwise:
say « Cela ne sert à rien. ».[/code]
Au passage, la syntaxe que tu utilises pour les conditions est considérée comme « vieille ». Le manuel d’Inform recommande celle que j’ai utilisée (pas de « begin » et « end », deux-points après « if » et « otherwise » et indentation à la python ; il faut que ce soit des tabulations, et pas des espaces comme sur le forum). Bien sûr, tu peux quand même continuer de faire comme tu le fais, ça ne change rien.
Décidément ton aide est précieuse. Merci encore,
Thierry
P.S : On traduit habituellement « either/or » par « ou/ou ».
Il n’y a pas de quoi.
Mais des « propriétés ou/ou », ce n’est pas très élégant.
On pourrait très bien garder en anglais, mais comme à long terme la traduction de la documentation d’I7 est prévue, je réfléchis aux traductions des termes techniques. Ce n’est vraiment pas urgent pour l’instant.