Création d'une nouvelle commande

Bonjour,

Pour les besoins de mon jeu qui est une espèce de banc d’essai pour les situations les plus courantes, j’ai besoin de redéfinir le verbe « nager ». J’ai donc concocté ça, où le [something] est évidemment une direction :

[code]understand the command « swim » as something new.
understand the command « nager » as something new.
swimming is an action applying to one thing.
understand « swim [something] » or « nager [something] » as swimming.

check swimming:
if location is Douve:
say « Vous êtes considérablement gêné par la végétation et vous vous fatiguez. »;
else:
say « Vous ne pouvez pas nager ici ! » instead.

carry out swimming something: try going something.[/code]

La règle « check » ne gêne pas le parser, c’est « carry out » qui pose problème : « going something » est perçu comme une condition ???

Merci de votre aide.

going somewhere, non ?

Hé non ! Malheureusement… Le « somewhere » est lui aussi perçu comme une condition.

[code]A waterroom is a kind of room.

Plage is a room. « Au nord, la mer. ».

Mer1 is a waterroom. « Au nord, la mer continue. ». Mer1 is north from Plage.

Mer2 is a waterroom. « A l[']est et au sud, la mer. ». Mer2 is north from Mer1.

Mer3 is a waterroom. « A l[']ouest on retourne vers la plage. ». Mer3 is east from Mer2.

Understand « swim [a direction] » as going.

Before going a direction :
if the player is not in a waterroom and the player’s command includes « swim »
begin ;
say « Vous n[‹ ]êtes pas dans l[ ›]eau. » ;
stop the action ;
end if.[/code]

EDIT : Azathoth a posté avant moi, donc ce que je dis recoupe un peu sa solution, qui est très bien. :slight_smile: (mais j’aurais utilisé un check plutôt qu’un before, peut-être.)

Déjà, je pense que swimming n’est pas définie par défaut (en tout cas pas si tu as la dernière version de l’extension française). Pas besoin du « understand as something new » (mais ça ne fait pas de mal non plus de l’avoir).

Ensuite, comme cette commande s’utiliser avec une direction (comme « nager ouest »), il faut modifier plusieurs choses : il faut que ça s’applique à « one visible thing » (parce que les directions sont toujours visibles mais jamais touchables), et il faut ajouter des lignes de compréhension pour prendre en compte les prépositions, comme « nager vers l’ouest ». Aussi, les lignes de compréhension devraient être « nager [direction] », sinon le joueur pourra taper des choses comme « nager moi » ou « nager la lampe ».

Il y a une autre erreur dans la règle check : il faut mettre un instead à la fin de la deuxième ligne pour empêcher le joueur de nager quand il est dans les douves — sauf s’il se fatigue mais qu’il a quand même réussi, ce n’est pas clair. Dans ce dernier cas, il ne faudrait pas que ce texte soit dans une règle check car l’action n’est pas bloqué.

Enfin, pour ton problème, il est simple. Quand tu dis « try going something », Inform le comprends comme « essayer d’aller quelque chose ». Mais il ne peut pas deviner quel est ce quelque chose. Il faut utiliser le « noun », qui est l’objet de l’action (on en avait parlé récemment). Le code devient :

Carry out swimming: try going the noun.

Cependant, je ne vois pas trop l’intérêt d’une telle action : le joueur ne tapera sûrement pas « nager ouest » alors qu’il peut juste taper « o » (ce qui résultera en l’action going). Pourquoi ne pas juste mettre « nager » en synonyme de « aller » ?

Understand the command "swim" as "going". Understand the command "nager" as "aller".
Ou alors, comme de toute façon il ne risque pas de taper le verbe explicitement, juste faire une action nager qui ne prend pas d’objet pour intercepter les messages si le joueur tape juste « nager ».

Enfin, c’est toi qui vois !

Nos réponses se sont croisées, tiens :slight_smile:

Merci à tous :smiley:
Vos remarques sur la faible utilité d’une telle commande sont parfaitement justifiées mais, comme je dis, « Le Château du Temps » ( vous voyez l’originalité :open_mouth: ! ) est un banc d’essai plus qu’un jeu. Avant, j’utilisais Quest qui n’est pas ridicule du tout, d’ailleurs.

Natrium a dit du bien de mon code :cry: je peux mourir en paix <3

Ah mais attention, j’ai bien dit qu’il aurait mieux valu utiliser check ! Tout n’est pas encore parfait ! :smiling_imp:

Et pour Le Château du Temps, moi je trouve que le titre est intriguant. Mais tu as raison de faire un banc d’essai, c’est comme ça qu’on apprend !

Ça change quoi, d’ailleurs ? Je ne me suis jamais penché sur « check ».

Je te l’avais déjà expliqué !

En tant que tel, c’est surtout une distinction sémantique (chaque livre de règles a une signification précise), mais ce que tu as fait ici est bien aussi, il n’y a pas d’obligations. C’est juste que je trouve qu’un check serait plus approprié sémantiquement parlant, mais c’est en partie subjectif.

Aussi, ça aide de bien choisir la règle à utiliser quand il y en a beaucoup, pour causer le moins de conflits possible et qu’elles interagissent bien ensemble.

Enfin bref.