Parser (Inform)

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

Modérateurs: Stormi, Otto Grimwald

Parser (Inform)

Messagepar SIM54 le Lun Fév 23, 2009 2:14 pm

Bonjour,

je trouve que parfois la parser répond d'une manière un peu absurde. Supposons que le joueur insiste pour aller à l'ouest, alors que le seule sortie est l'est par exemple, et bien si le joueur tape : ouest, ouest, o, ouest

Cela répondra quatre fois : Vous ne pouvez pas aller par là.

Étrange non ?
SIM54
Grand Ancien
 
Messages: 299
Inscription: Mer Fév 07, 2007 12:44 pm

Re: Parser (Inform)

Messagepar Adrien le Lun Fév 23, 2009 2:16 pm

Non.
Avatar de l’utilisateur
Adrien
Très Ancien
 
Messages: 1092
Inscription: Mar Aoû 24, 2004 9:23 am
Localisation: Montpellier, France

Re: Parser (Inform)

Messagepar Adrien le Lun Fév 23, 2009 3:30 pm

Si la réponse standard ne te convient pas (bien qu'elle soit acceptée sans pb par les joueurs je pense), tu peux, et c'est toujours un plus je ne dis pas le contraire, la modifier autant que tu veux pour chaque direction!
Je me suis servi un peu de ça dans la cité des eaux.


Exemple:
Code: Tout sélectionner
w_to piece_place,
e_to piece_sortie,
d_to "Prendre par les égoûts? Trop dangereux!^",
u_to "Inutile de se prendre pour spider man...^",


Tu peux même aller plus loin en intégrant carrément du code pour une direction. Ce qui peut te permettre de programmer dix réponses différentes si ça te chante!! Y'a pas vraiment de limite là dessus.
A noter aussi qu'il existe la direction "cant_go" qui correspond à toutes les directions non préparées avec des "w_to", "e_to", etc.

Un exemple qui réunit ces deux derniers points:
Code: Tout sélectionner
   cant_go [;
      if (self hasnt general) {
         print "Hmm... Non, pas par là à priori... Mais le fait d'avoir bougé un peu vous aide à vous repérer un peu plus.^";
         give self general;
         rtrue;
      }
      else {
         print "Inutile d'aller dans cette direction.^";
      }      
   ],
Avatar de l’utilisateur
Adrien
Très Ancien
 
Messages: 1092
Inscription: Mar Aoû 24, 2004 9:23 am
Localisation: Montpellier, France

Re: Parser (Inform)

Messagepar Otto Grimwald le Mar Fév 24, 2009 3:14 am

c'est logique au contraire, mais c'est une réponse d'ordinateur.
Tu peux également coder quelque chose pour donner une réponse plus personnalisée, par exemple la première fois que l'on demande à aller dans une direction impossible il peut répondre la version par défaut, la seconde fois il peut dire "mais je viens de vous dire que vous ne pouvez aller par là" etc... (je n'ai pas d'exemple à donner, mais c'est faisable).

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

Re: Parser (Inform)

Messagepar Eriorg le Mar Fév 24, 2009 4:19 am

Ah, je crois que je viens de comprendre la question posée par SIM54 (je n'avais pas compris non plus, au début). Le problème serait le suivant (j'ai vérifié dans un jeu que ça pouvait effectivement se produire) :
Code: Tout sélectionner
>o,o,o,o
Vous ne pouvez pas aller par là.
Vous ne pouvez pas aller par là.
Vous ne pouvez pas aller par là.
Vous ne pouvez pas aller par là.


Autrement dit, il y a quatre fois la même réponse sans que le joueur n'ait rien tapé entretemps (parce qu'il a tapé ces 4 actions sur la même ligne).

SIM54, lui, voudrait que dans cette situation, le jeu se rende compte qu'il suffit de répondre une seule fois "Vous ne pouvez pas aller par là." C'est bien ça ?

Mais je laisse les experts en Inform dire comment obtenir ce résultat...
Avatar de l’utilisateur
Eriorg
Grand Ancien
 
Messages: 856
Inscription: Jeu Déc 14, 2006 8:03 am
Localisation: Suisse

Re: Parser (Inform)

Messagepar Otto Grimwald le Mar Fév 24, 2009 7:40 am

ok, je vois. J'ai regardé dans le manuel, mais n'ai rien trouvé à ce sujet, je ne sais même pas si c'est facilement faisable.
Déjà, il faudrait tester si la commande est la même (ou produit le même résultat : w, o, west, ouest), et tester si la première au moins fonctionne (et il se passe quoi si seulement la première fois ou les 2 premières fois cela fonctionne ?). Donc pour autant de commandes tapées, il faudrait tester récursivement si ces commandes produisent le même résultat.
Cela me semble compliqué pour pas grand chose : si on tape 4 commandes, surtout si elles sont différentes mais similaires, on peut s'attendre à avoir 4 réponses.

Enfin, il pourrait y avoir des cas où si on insiste, cela produit un événement différent au bout d'un certain nombre de fois que l'on répète la commande (souvent les puzzles qui nécessitent cela sans aiguiller le joueur sont assez injustes...). Si on factorise les réponses, on ne saurait pas exactement quand cela arrive.

(comme on dit, dites-nous ce dont vous avez besoin, on vous expliquera comment vous en passer... ;) )

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

Re: Parser (Inform)

Messagepar Akien le Mar Fév 24, 2009 6:51 pm

Je dois dire que peu de joueurs à mon avis passent leur temps à essayer d'aller quatre fois dans une direction en un coup.
À part si vraiment la description sous-entend qu'il y a quelque chose à l'ouest, mais dans ce cas là c'est la faute de l'auteur.
Avatar de l’utilisateur
Akien
Grand Ancien
 
Messages: 298
Inscription: Mer Mai 09, 2007 1:31 pm
Localisation: En Allemagne, en France ou au Danemark, ça dépend


Retourner vers Questions techniques et aide pour votre code

Qui est en ligne

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

cron