Portée des identifieurs

Pour discuter des langages que nous utilisons pour réaliser nos jeux : problèmes, solutions, suggestions...

Modérateurs: Stormi, Otto Grimwald

Portée des identifieurs

Messagepar tvisarl le Mar Juin 21, 2016 2:32 pm

Bonjour,

La portée ( scope ) ou la validité dans l'espace et le temps des identifieurs est manifestement un problème majeur dans Inform 7, comme partout d'ailleurs.
Où pourrais-je trouver sa définition et les règles correspondantes ?

Merci d'avance,

Thierry
tvisarl
Grand Ancien
 
Messages: 166
Inscription: Sam Juin 18, 2016 9:20 am

Re: Portée des identifieurs

Messagepar Otto Grimwald le Mar Juin 21, 2016 3:28 pm

À part dans le manuel, je ne vois pas trop : http://inform7.com/learn/man/WI_18_29.html

Tu peux rajouter un objet nommé "bidule" dans le "scope" avec la commande : "place the bidule in scope; "

C'est quoi que tu appelles identifieurs ? Les objets ?

Avatar de l’utilisateur
Otto Grimwald
Très Ancien
 
Messages: 3028
Inscription: Mar Aoû 24, 2004 12:02 pm

Re: Portée des identifieurs

Messagepar tvisarl le Sam Juin 25, 2016 6:04 pm

Merci. Je n'ai pas été assez explicite. Je voulais savoir si on peut mettre deux exemplaires du même objet dans deux endroits différents et que Inform les distingue à partir de l'endroit où ils sont.
Par exemple, que le couteau porté par le gladiateur et celui resté dans les vestiaires ( par ailleurs absolument identiques ) soient reconnus comme distincts et comment. Dans un langage de programmation classique cela ne poserait aucun problème.
On dirait simplement "gladiateur.couteau" et "vestiaire.couteau", et basta :)
tvisarl
Grand Ancien
 
Messages: 166
Inscription: Sam Juin 18, 2016 9:20 am

Re: Portée des identifieurs

Messagepar Natrium le Sam Juin 25, 2016 7:00 pm

Il faut qu'ils soient distincts dans le code ? Dans ce cas, il ne sont pas vraiment identiques…

Pour qu'ils soient identiques, j'imagine qu'il faudra créer un type.
Code: Tout sélectionner
A couteau is a kind of thing.

Et pour en avoir deux.
Code: Tout sélectionner
Le gladiateur porte le couteau du gladiateur. Le couteau du gladiateur est un couteau.
Le couteau du vestiaire est dans le vestiaire. Le couteau du vestiaire est un couteau.

Comme ça tu peux les nommer par « couteau du gladiateur » ou « couteau du vestiaire », ou même juste « couteau » (dans ce cas, Inform va choisir le couteau le plus proche dans la source, c'est-à-dire sous le même titre). Mais si tu as peur des conflits, tu peux mettre des traits d'union.

Je ne pense pas qu'il y ait un moyen facile de différencier les couteaux autrement qu'en leur donnant des noms différents dans le code. On peut aussi faire comme ça, si on les veut vraiment identiques, et que ce soit le fait qu'il en porte un qui compte :
Code: Tout sélectionner
si le gladiateur porte un couteau (called C):
    maintenant le joueur porte C.
Avatar de l’utilisateur
Natrium
Grand Ancien
 
Messages: 1165
Inscription: Mar Oct 04, 2011 11:18 pm

Re: Portée des identifieurs

Messagepar tvisarl le Dim Juin 26, 2016 3:37 pm

Maintenant je pense que j'y suis, merci :D
tvisarl
Grand Ancien
 
Messages: 166
Inscription: Sam Juin 18, 2016 9:20 am


Retourner vers Questions techniques et aide pour votre code

Qui est en ligne

Utilisateurs parcourant ce forum: Bing [Bot] et 2 invités

cron