After et Before ??

Bien le bonjour à tous,
ça fais un petit moment que je ne suis pas venu poster sur le forum (cause de probleme de santé) :s. Mais maintenant remis sur pied, je me replonge dans le language Inform et déja une question me viens :

Je ne comprend pas la diffrenrce entre After et Before qui ce trouve dans le tutotiel.

Ce serais sympa que quelqu’un m’explique la difference :slight_smile:.

Merci à vous et bonne aventure …

bonsoir,

je pense que la différence entre les deux peut s’expliquer si tu as besoin de tester des conditions résultant de certaines actions dans un certain ordre.
Before executera la condition avant tout chose, alors que after le fera après que le joueur ait lancé son action.
Je n’ai jamais bien vu l’utilité, mais dans certains cas cela doit sans doute être utile.
Si quelqu’un peut préciser…

La propriété before d’un objet sur lequel le joueur agit est exécutée avant que l’action soit accomplie, et permet éventuellement d’empêcher cette action.

La propriété after d’un objet sur lequel le joueur agit est exécutée après l’accomplissement de l’action, mais avant que le jeu annonce ce qui s’est passé. Elle ne concerne que les actions du groupe 2, qui modifient l’état du jeu.

Les propriétés react_after et react_before fonctionnent de manière analogue pour les réactions des objets animés. Par exemple, avec le verbe « Go », react_before sera déclenchée pour les objets animés du lieu de départ, alors que react_after le sera pour ceux du lieu d’arrivée.

Pour plus d’informations :
firthworks.com/roger/informfaq/vv.html#2
inform-fiction.org/manual/html/s4.html
inform-fiction.org/manual/html/s6.html

– JL

Pas super simple à comprendre mais c’est déjà beaucoup plus clair dans mon esprit Smile. Merci pour vos réponse. Je vais de ce pas me plonger dans la suite de ma formation à inform.

Oui, pas évident (en particulier l’exemple avec le verbe « Go »). Mais sur des cas précis c’est plus facile à comprendre.

–JL

J’ai une question bête (mais j’ai tout oublié)

Quand je fais :

before [;Take : print « vous ramassez le caillou »;move caillou to player;],

Ca me fait un truc du style :

prendre caillou

Vous ramassez le caillou. Vous avez déjà le caillou !

Alors que faire ?

Si j’ai bien compris le but est de remplacer le message par défaut sans changer le résultat de l’action.

Dans ton exemple il faut retourner True pour interrompre l’action, sinon l’action est exécutée deux fois :

Mais ici le plus simple est d’utiliser after pour laisser faire l’action mais interrompre le message par défaut :

Remarque : « … »; sans print est équivalent à print « …^ »; rtrue;

Plus de détails par exemple ici : inform-fiction.org/manual/html/s4.html

– JL