Joueur en cage - comment gérer ?

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

Modérateurs: Stormi, Otto Grimwald

Joueur en cage - comment gérer ?

Messagepar Yoruk le Ven Oct 03, 2014 11:57 am

Salut à tous,

Petite question à laquelle je n'ai pas de solution évidente... Comment gérer un lieu A dans lequel se trouve une cage B, dans laquelle le joueur peut aller ?

Problèmes:
-le joueur dans la cage continue à voir les objets présents dans le lieu A, mais ne peut pas les toucher, (en supposant que la cage est haute);
-le joueur peut entrer dans la cage, et en sortir pour revenir dans A;
-quand le joueur est dans A, il peut évidemment examiner et toucher la cage;
-certains objets (cage en elle même, serrure, porte de la cage) sont "touchables" dans tout les cas.

Comment faire en pratique ? Créer deux lieux ? La cage doit être forcément un objet avec l'attribut enterable et container ... Mais comment la gérer en pratique ? J'ai fait quelques essais, mais les commandes "entrer" et "sortir" ne marchent pas forcément bien, car je me retrouve avec des incohérences.

Pour les objets non touchables, Inform 6 propose (oui je suis encore au 6 8) ), dans le DM4 (page 232), d'utiliser une propriété ObjectIsUntouchable(noun). Mais en pratique, le résultat est "Vous ne pouvez pas toucher XX car XX est dans le chemin", ce qui ne colle pas au contexte, au sens où ce n'est pas un objet qui m'empêche de toucher les objets présents dans A, mais bien un problème d'accès ! Voici ce qu'explique le DM4 :

Formally, scope determines what you can talk about, which usually means what you can see or hear. But what can you touch? Suppose a locked chest is inside a sealed glass cabinet. The Inform parser will allow the command ``unlock chest with key'' and generate the appropriate action, <Unlock chest key> , because the chest is in scope, so the command at least makes sense. But it's impossible to carry out, because the player can't reach through the solid glass. So the library's routine for handling the Unlock action needs to enforce this. The library does this using a stricter rule called ``touchability''. The rule is that you can touch anything in scope unless there's a closed container between you and it. This applies either if you're in the container, or if it is.


Mais ça ne m'aide pas vraiment... Et faire des tests n'est pas facile. Comment, en I6, savoir si le joueur est dans un objet enterable ? Je connais if (player in LieuA) mais je n'ai pas réussi à le transposer aux objets...?

Des idées ?
Yoruk, SATOR AREPO TENET OPERA ROTAS
Avatar de l’utilisateur
Yoruk
Grand Ancien
 
Messages: 1065
Inscription: Lun Juin 11, 2007 9:50 am
Localisation: Chiddes, à 150 mètres du lavoir

Re: Joueur en cage - comment gérer ?

Messagepar Otto Grimwald le Sam Oct 04, 2014 8:04 am

tu peux toujours regarder le code de "Échappée Belle Dans Les Contrées du Rêve" qui utilise une cage dans une pièce à un moment donnée :

http://www.ifarchive.org/if-archive/gam ... mlands.inf

Je vois ça dans le code :

Code: Tout sélectionner
has  transparent openable lockable locked container enterable static female;

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

Re: Joueur en cage - comment gérer ?

Messagepar Yoruk le Sam Oct 11, 2014 7:46 am

Merci !

J'ai pu (je pense) tout résoudre, avec l'attribut transparent. Pour les problèmes d'accessibilité, je réalise un IF (player into cage) pour savoir s'il peut ou non agir sur l'objet. Je suis en train de regarder si on peut faire mieux...
Yoruk, SATOR AREPO TENET OPERA ROTAS
Avatar de l’utilisateur
Yoruk
Grand Ancien
 
Messages: 1065
Inscription: Lun Juin 11, 2007 9:50 am
Localisation: Chiddes, à 150 mètres du lavoir


Retourner vers Questions techniques et aide pour votre code

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité