Bonjour,
Je suis dans la salle « Introduction » et j’ai ça dans mon code :
P01 is a room. It is east of Introduction.
Mais « go P01 » ou « move the player to P01 » sont rejetés, au motif que je ne peux pas voir P01 ! Et en plus je ne peux pas définir une action : elles ne s’appliquent pas à des salles !
Et pourtant je voudrais pouvoir utiliser un hyperlien pour m’envoyer quelque part ! Et ça m’embête de dire « east » dans mon hyperlien ! Alors ?
Merci d’avance.
Solution facile mais rébarbative à implanter :
Understand "P01" as the east when the location is introduction.
Ça fera que le nom de l’endroit sera un synonyme de la direction, mais seulement au bon endroit. Il faut le faire pour chaque endroit et chaque direction, ça peut devenir un peu lourd à mettre en place.
Solution plus difficile mais générale :
[code]Going by name is an action applying to a visible thing.
Understand « go to [any room] » as going by name.
Check going by name:
if the noun is not adjacent, say « [Le noun] est trop loin. » instead;
Carry out going by name:
let way be the best route from the location to the noun;
try going way.[/code]
Le secret, c’est le « any room ». Ça permet de pouvoir se référer à un endroit dans une commande (le mot « any » est là pour qu’on puisse faire référence à la chose en question même si elle n’est pas in scope). Il faut aussi spécifier « visible thing » car les choses à distance ne sont pas touchables, juste visibles.
Il faudra peut-être effectuer plus de vérifications si on veut que ça ne fonctionne qu’avec des salles visitées ou connues par exemple.
(j’ai fait le code de mémoire, il se peut qu’il y ait des erreurs.)
Merci d’avoir répondu si vite. C’est bien ce qu’il me fallait, mais il faut compléter : mon problème ne se limitait pas là, je voulais, et je veux toujours, émuler une partie de Twine dans Inform : passer d’une salle à l’autre en cliquant sur des hyperliens, et de manière transparente pour l’utilisateur. Et comme le principe de base d’Inform et celui de Twine sont radicalement différents… Enfin, on arrivera peut-être à combiner le meilleur des deux mondes.
Que voulez-vous, on a de plus en plus de gens qui ne veulent pas passer trop de temps sur certaines choses ; par exemple, ils ne veulent pas savoir que la chapelle est au nord du jardin ; ça ne les intéresse pas, ils ne veulent pas avoir à chercher cette information et il faut les guider pour arriver tout de suite à la chapelle. On peut comprendre un peu ça, d’ailleurs. Question de goût. A mon avis Inform devra muter pour se rapprocher de Twine en offrant un look plus moderne et des possibilités de navigation simplifiées, tout en gardant sa puissance et son environnement de développement, très supérieurs à tout ce que Twine peut offrir.
Mais je déconne, moi… Je suis en train de faire un rapport d’audit, ma parole !
P.S : Si la solution complète vous intéresse, je peux la publier.
Ah oui, il y a une bricole à changer dans le code de Natrium:
Going by name is an action applying to a visible thing.
devient
Going by name is an action applying to [b]one[/b] visible thing.
Merci encore à lui.
Je suis bien curieux de voir la solution complète, j’avais pensé un temps essayer de faire quelque chose comme ça pour les déplacements mais mon attention s’est porté sur bien d’autres problèmes…