[i7] Prise en compte de la saisie vide

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

Modérateurs: Stormi, Otto Grimwald

[i7] Prise en compte de la saisie vide

Messagepar Corax le Sam Sep 24, 2016 10:27 am

Salut à tous !

Me revoilà avec une petite questions techniques. La règle "After reading a command" permet de filtrer la commande du joueur et donc d’intercepter des erreurs pour les traiter de manière appropriée. Ça marche pour tout, sauf dans un cas : lorsqu’on ne tape rien. Ma question est donc la suivante : comment capter cette erreur ? Je sais changer le message par défaut qui s’affiche, mais ce n’est pas ce que je recherche.

Merci d’avance !
Corax
Grand Ancien
 
Messages: 282
Inscription: Mer Juin 08, 2016 10:00 am

Re: [i7] Prise en compte de la saisie vide

Messagepar Natrium le Sam Sep 24, 2016 4:06 pm

Ça ne marche pas car Inform 7 ne se rend pas au stade reading a command quand la commande est vide (c'est ancré plus profondément dans I6). Dans ce cas, il faut utiliser l'activité printing a parser error.

Code: Tout sélectionner
For printing a parser error when the latest parser error is the I beg your pardon error:
    try waiting

Le code ci-dessus fera attendre le joueur s'il appuie sur entrée sans rien taper, au lieu d'afficher le message par défaut. En revanche, je ne sais pas si ça peut causer des effets indésirables si l'activité est utilisée, comme ici, pour autre chose qu'afficher un message. Mon code ne fera pas avancer le compteur de tours par exemple, et donc ne lancera pas les règles every turn entre autres (ça peut se corriger avec un « follow the turn sequence rule » mais on touche à la machinerie d'Inform, il faut être sûr de ce qu'on fait).

Peux-tu préciser ce que tu veux exactement ? Si ça se trouve, il y a une extension qui fera ça mieux que ce que je peux faire.

Ah, et bien sûr, pour avoir plus d'infos sur l'activité utilisée ici, et pour avoir la liste des erreurs de parser possible, voir la section 18.35 de la doc.
Avatar de l’utilisateur
Natrium
Grand Ancien
 
Messages: 1186
Inscription: Mar Oct 04, 2011 11:18 pm

Re: [i7] Prise en compte de la saisie vide

Messagepar Corax le Sam Sep 24, 2016 5:11 pm

Et bien il semble que ça marche.

Le système que je mets en place consiste à jouer en mode LDVELH (proposition de choix, saisie de numéros pour agir), mais également à retravailler l’apparence du jeu. Je trouve, bien sûr ça n’engage que moi, que l’affichage classique d’une FI fait un peu primitif. À chaque saisie du joueur, la réponse apparaît à la suite. Ça ne donne pas une impression de texte dynamique, de jeu vidéo. Du coup, tout bêtement, à chaque saisie du joueur, j’ai une procédure qui efface l’écran et affiche ce qu’il y a à afficher. La gestion des erreurs ne devait pas échapper à la règle.

Je ne pense pas que l'astuce que tu m’as donné fera des bugs car le système est au final très simple d’usage. Non, vraiment, je suis plutôt enthousiaste car je me retrouve même avec un code extrêmement propre, facile à organiser.
Corax
Grand Ancien
 
Messages: 282
Inscription: Mer Juin 08, 2016 10:00 am

Re: [i7] Prise en compte de la saisie vide

Messagepar tvisarl le Mer Déc 21, 2016 3:07 pm

Ouais ! Excellente question et excellente réponse !

( Et qu'on ne croie surtout pas que je plaisante, je me posais la question moi-même )
tvisarl
Grand Ancien
 
Messages: 166
Inscription: Sam Juin 18, 2016 9:20 am

Re: [i7] Prise en compte de la saisie vide

Messagepar tvisarl le Sam Déc 24, 2016 6:13 pm

Bonjour à tous,

Le 24 décembre n'est sans doute pas le meilleur moment pour poser ce genre de questions, mais enfin ...
Comment faire pour transformer une saisie vide en "g", répétition de la commande précédente, très utile dans une conversation ?

Merci et Bonnes Fêtes à tous !

P.S : Certains se souviennent peut-être que je suis venu à Inform 7 parce que j'étais inquiet de la pérennité de Quest ? Eh bien, Quest est mort. Son créateur et unique développeur en a assez, ce qu'on peut comprendre.
tvisarl
Grand Ancien
 
Messages: 166
Inscription: Sam Juin 18, 2016 9:20 am

Re: [i7] Prise en compte de la saisie vide

Messagepar Natrium le Sam Déc 24, 2016 7:27 pm

Ce n'est pas possible par défaut. Pour ça, il faut modifier le code I6 sous-jacent qui s'occupe du parser (parce que la commande « encore » n'est pas à proprement parler une action). J'ai trouvé plusieurs sujets sur la question sur le forum anglophone, mais ils sont tous assez vieux, ce qui implique qu'il faut adapter les codes proposés à la version actuelle d'Inform (et qu'il faudra vraisemblablement le vérifier à chaque nouvelle version d'Inform).

Je pourrais poser la question là-bas si tu veux.


(Pour ce qui est de Quest, il n'est pas forcément mort, il suffit que quelqu'un reprenne le flambeau. Mais c'est vrai qu'il y a des chances que personne ne le fasse.)
Avatar de l’utilisateur
Natrium
Grand Ancien
 
Messages: 1186
Inscription: Mar Oct 04, 2011 11:18 pm

Re: [i7] Prise en compte de la saisie vide

Messagepar Natrium le Mer Jan 25, 2017 9:38 pm

Il se trouve que quelqu'un vient d'écrire une extension pour ça.

Ça ajoute une activité qui permet de manipuler la commande du joueur dans le cas où elle serait vide. Pour que ça répète la dernière action :

Code: Tout sélectionner
Include Empty Command Handling by Daniel Stelzer.

For repairing an empty command:
   change the text of the player's command to "encore".

Il faut utiliser cette activité seulement s'il y a besoin de modifier la commande du joueur. Si on veut modifier le message par défaut ou l'affichage de manière générale (comme pour Corax), alors il vaut mieux utiliser l'activité printing a parser error.
Avatar de l’utilisateur
Natrium
Grand Ancien
 
Messages: 1186
Inscription: Mar Oct 04, 2011 11:18 pm


Retourner vers Questions techniques et aide pour votre code

Qui est en ligne

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

cron