Règle générale mais avec exceptions

Bonjour

Encore un soucis (petit) que je n’arrive pas résoudre sous I7

Je veux :
1/ Une régle générale qui s’applique quand le joueur tape AIDE
2/ Que la règle particulière s’applique quand le joueur est dans un lieu défini

J’ai écrit le code suivant, mais seule la règle générale s’applique. La règle selon le lieu ne s’applique pas

Understand the commands "aide" as something new. Understand "aide" as helping. Helping is an action applying to nothing.

[la règle par défaut]

Instead of helping:
	say "[one of]Creusez-vous encore un peu les méninges.[or]Comment pourrais-je savoir ?[or]Vous n'en n'avez pas particulièrement besoin ici.[at random]".	


[Les règles particulières qui doivent prendre la pas sur la régle générale selon le lieu où se trouve le joueur]
	
Instead of helping when location is in the Crique:
	say "[one of]Il faudrait rentrer dans l'eau.[or]On ne vous a pas appris à plonger ?[cycling]".

Instead of helping when location is in the Fonds_marins:
	say "[one of]Il faut réparer la coque si ce n'es pas déjà fait.[or]Bouchez la fissure.[cycling]".

Merci

C’est soit :

Instead of helping when location is the Crique:

soit :

Instead of helping when the player is in the Crique:

Un grand merci

Je ne connaissais pas la subtilité du « IN » ou non que l’on définisse Player ou Location !

Tout bête mais encore fallait-il le savoir.

Inform me réserve encore bien des surprises…

La « location », c’est l’endroit (la room) où se trouve le joueur. En écrivant « when location is in the Crique », tu vérifie si l’emplacement du joueur se trouve dans la crique. Mais comme un endroit — la crique — ne peut pas contenir autre endroit — la location —, car seul des choses peuvent être dans un endroit, la condition est toujours fausse. Alors que si tu écris « when location is the Crique », tu vérifies que l’emplacement est tel ou tel endroit et tout va bien.

Il y a aussi un petit piège à savoir quand on écrit « when the player is in the Crique ». Si le joueur est sur une chaise qui se trouve dans la crique, alors la condition est fausse : le joueur n’est pas dans la crique au sens d’Inform, il est sur la chaise, et c’est elle qui est dans la crique. Si on veut tester si le joueur est directement ou indirectement dans un endroit, il faut utiliser la location.

Très bien, merci pour l’information.

Mais une question me taraude.
Comment arrivez-vous à maîtriser ainsi Inform dont je découvre encore les subtilités après deux ans de pratique (sporadique, mais tout de même…) ?

Voici en ce qui me concerne.

Je connais plusieurs langages de programmation et j’ai fait des études de sciences, donc je trouve que ça me facilite l’analyse et la compréhension du code. (Par exemple, je n’aurais pas eu le problème initial de ce sujet parce que je trouve que c’est logique et évident. Sans offense bien sûr, je parle pour moi et je conçois que c’est différent pour tout le monde. Ça m’arrive aussi d’avoir du mal parfois !)

J’ai commencé à utiliser Inform 7 depuis mes 14 ans environ, ce qui fait que j’ai une dizaine d’années d’expérience avec Inform. (Je ne m’étais pas rendu compte que ça faisait si longtemps déjà !) Au début je n’étais pas très très bon, et je ris un peu en voyant mes premiers projets…

J’ai lu la documentation au complet plusieurs fois. Ça ne marche pas pour tout le monde, certains n’aiment pas la façon dont la documentation officielle explique les choses, mais moi je l’adore.

Je m’occupe de la traduction en français d’Inform. Ça implique de connaître les rouages internes d’Inform, de fouiller dans les Standard Rules et dans les templates Inform 6 pour savoir comment les trucs fonctionnent.

Enfin, je suis simplement curieux et j’aime savoir comment les choses fonctionnent, alors je vais souvent voir la source d’extensions que d’autres personnes ont écrites juste comme ça.

De manière générale, tu n’as pas à t’inquiéter. Avec les concepts de bases, il est possible de faire des jeux complets et très bons ! C’est en se posant des questions ou en bloquant sur certaines choses qu’on finit par apprendre les concepts d’Inform moins utilisés.