Bonjour,
Je me confronte à un problème dans ma fiction, prenons un exemple.
Mon personnage peut-être rasé, lavé et coiffé.
Lorsqu’il se regarde dans un miroir, j’aimerai que la description se fasse en conséquence, du genre :
When blablabla, say "[if rasé OU coiffé OU habillé]Je suis [if rasé]habillé[if lavé], [end if][end if][if lavé]lavé[end if][if rasé][if habillé OU lavé] et [end if]rasé[end if].
J’aimerai donc savoir comment utiliser les fonctions logiques ET et OU, et savoir comment imbriquer plusieurs conditions les unes dans les autres (Le coup du [if X][if Y][end if][end if] n’a pas l’air d’etre supporté…)
Merci d’avance.
salut,
il n’est pas possible à ma connaissance de faire comme ça. Cela m’aurait bien arrangé également, mais effectivement les développeurs d’Inform7 n’ont pas prévu cela. Peut-être cela tient-il à une difficulté technique, ou peut-être qu’ils ont voulu éviter que les auteurs ne fassent du code spaghetti.
Pour pouvoir faire des choses plus compliquées, il faudra donc passer par une petite astuce pour imbriquer les tests :
Ici je voulais pouvoir indiquer qu’il y avait un chien ou une chienne, avec les accords qui vont bien :
[code]To say chien domestique:
say « domestiqué[If chien is female]e[otherwise][end if] »
To say un loup:
say « [If chien is female]une louve[otherwise]un loup[end if] »
The chien is an animal in desert. The description of chien is « [if chien is hostile]Cet animal pourtant placide dévoile des trésors d’agressivité quand il s’agit de se défendre face à de la violence injustifiée. [otherwise]Cet animal semble accueillant et il jappe joyeusement à votre approche. Même s’il ressemble un peu à [un loup], c’est [a chien] visiblement [chien domestique]. [end if]Où sont ses maîtres ? ».
[/code]
(c’est tiré du code d’un jeu en développement disponible ici : bitbucket.org/farvardin/la_vall … rieuse/src)
Cela dit, je ne sais pas si c’est aisé ni même possible d’appliquer cela dans ton exemple. Tu devrais pouvoir t’en sortir avec une construction plus traditionnelle, du genre :
if the player is habillé and the player is rasé and the player is lavé
say blabla
if the player is habillé and the player is rasé and the player is not lavé
say blabla
etc
mais il faudra indiquer tous les cas possibles. Avec plus de caractéristiques, ça serait impossible, il faudrait sans doute afficher le résultat sous forme d’une liste. Voir chapitre 20 du guide d’inform7, mais je dois avouer n’avoir jamais utilisé cela. Ça semble apparemment assez puissant.
Merci beaucoup pour ton aide, j’ai finalement détaillé pour chaque cas de manière simplifiée du coup. Néanmoins, je suis surpris que ça n’existe pas, je suppose ne pas être le premier à me frotter à ce problème, c’est assez courant quand même les opérateurs logiques… Enfin bon, croisons les doigts pour ne pas arriver sur un point du même genre en plus compliqué :mrgreen:
il y a aussi la possibilité d’en parler sur leur bug tracker : inform7.com/contribute/report/