Bibliothèque (French.h) : pistes d'amélioration

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

Modérateurs: Stormi, Otto Grimwald

Re: Bibliothèque (French.h) : pistes d'amélioration

Messagepar Stormi le Mer Sep 24, 2008 8:08 am

Otto Grimwald a écrit:il me semble que dans le contexte d'une FI, ce genre de réponse passe plutôt bien.

Oui, mais dans le cas d'Akien ça passe pas du tout, le héros est une souris :) Mais la solution est simple : définir une classe Humain et y traiter les ordres intelligemment.
Samuel V.
Avatar de l’utilisateur
Stormi
Grand Ancien
 
Messages: 1205
Inscription: Dim Avr 16, 2006 8:07 pm
Localisation: Lyon

Re: Bibliothèque (French.h) : pistes d'amélioration

Messagepar Stormi le Mar Sep 30, 2008 9:33 am

Pour l'action LookUnder, que nous avons tous tendance à oublier en tant qu'auteurs, ne devrait-on pas chercher une réponse par défaut qui reste satisfaisante dans toutes les situations ?

La réponse par défaut actuelle est : "Vous ne trouvez rien d'intéressant."

C'est assez mauvais pour des objets sous lesquels on n'est pas censés regarder (regarder sous le gros rocher), parce que cela suggère qu'on a pu réellement regarder.

Contraintes :
- la réponse doit être cohérente que l'on ait le droit de regarder sous l'objet ou non
- si on choisit de transférer "regarder derrière" (en plus de "regarder sous") vers LookUnder plutôt que Search, la réponse doit être cohérente aussi pour cette action

Avez-vous une idée ?

Remarque annexe pour les auteurs : regarder/fouiller sous ou derrière un objet peut être pertinent dans de nombreuses situations du point de vue du joueur, pensez à gérer cette action quand elle est pertinente.
Samuel V.
Avatar de l’utilisateur
Stormi
Grand Ancien
 
Messages: 1205
Inscription: Dim Avr 16, 2006 8:07 pm
Localisation: Lyon

Re: Bibliothèque (French.h) : pistes d'amélioration

Messagepar Otto Grimwald le Mer Oct 01, 2008 3:05 pm

je propose toujours mon :

> regarder sous le rocher

impossible !


:)

plus sérieusement, le problème c'est qu'il ne me semble pas faisable de trouver une réponse qui puise satisfaire à la fois une action possible et impossible dans ce cas. Le mieux serait de pouvoir tester si l'objet fouillé n'est pas scenery ou fixed in place, et de donner une réponse en fonction de cela, mais cela sera un peu une usine à gaz pour pas grand chose. En fait, cela sera juste pour intercepter si le joueur passe des commandes pas forcément très logiques (même si parfois il n'en a pas conscience), ex : fouiller sous le bloc de 15 tonnes, fouiller sous la tour eiffel, mais aussi, fouiller sous la buche (on ne sait pas forcément si c'est trop lourd ou pas)
Je ne suis pas un très grand partisan du "fouiller sous", car c'est souvent synonyme de "fouiller" tout court : si on fouille "un pot", on fouille le pot et son environnement. Je vois surtout la pertinence de "fouiller sous" dans le cas de "fouiller sous le lit"...

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

Re: Bibliothèque (French.h) : pistes d'amélioration

Messagepar Stormi le Mer Oct 01, 2008 4:05 pm

Otto Grimwald a écrit:il ne me semble pas faisable de trouver une réponse qui puise satisfaire à la fois une action possible et impossible dans ce cas.

Je pense que si, le tout est de trouver une formulation. Par exemple : "Vos efforts ne produisent aucune découverte notable." Ça suggère un peu moins qu'on a réellement pu regarder sous le bloc de 15 tonnes . Et je suis sûr qu'on peut trouver mieux.

Ou encore, très lourd : "Dans l'hypothèse où cette action aurait abouti, vous ne trouvez rien d'intéressant", ou "Vous ne trouvez rien d'intéressant, pour peu que votre recherche ait un sens"

Sinon, en désespoir de cause, "Vous ne trouverez rien ainsi." a le mérite d'éviter les réponses à côté de la plaque (ce n'est pas très loin de ton "Impossible !" :)).

Je ne suis pas un très grand partisan du "fouiller sous", car c'est souvent synonyme de "fouiller" tout court : si on fouille "un pot", on fouille le pot et son environnement. Je vois surtout la pertinence de "fouiller sous" dans le cas de "fouiller sous le lit"...
En tout cas M. Nelson a décidé pour nous puisque l'action LookUnder existe, donc on doit faire en sorte que l'action renvoie toujours quelque chose de pertinent... Si on trouve une formulation pour le cas général les auteurs n'auront plus qu'à gérer le seuls cas pertinents, comme "regarder sous le lit".
Samuel V.
Avatar de l’utilisateur
Stormi
Grand Ancien
 
Messages: 1205
Inscription: Dim Avr 16, 2006 8:07 pm
Localisation: Lyon

Re: Bibliothèque (French.h) : pistes d'amélioration

Messagepar Otto Grimwald le Mer Oct 01, 2008 8:54 pm

oui, en tout cas ils ne se sont pas trop embêtés parce que la réponse est "You find nothing of interest.".

J'aime assez le "Vos efforts ne produisent aucune découverte notable.". Pour être encore plus neutre, on peut imaginer "Votre action ne produit aucune découverte notable." ou encore "Cette action n'aboutit à aucune découverte notable."

note : en fait au début je croyais lookunder renvoyait simplement à search.

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

Re: Bibliothèque (French.h) : pistes d'amélioration

Messagepar Otto Grimwald le Mer Oct 01, 2008 9:15 pm

je viens de voir que l'on avait jadis utilisé pour cette action "Mes recherches furent vaines." Je présume que c'est JB qui avait trouvé cela soit pour ekphrasis, soit pour lieux communs. Je trouve que c'est une bonne formule, qui reste assez neutre.

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

Re: Bibliothèque (French.h) : pistes d'amélioration

Messagepar Stormi le Lun Oct 13, 2008 8:58 pm

Liste des derniers changements :

- verbe "creuser" : ajout des grammaires "* 'dans' noun" et "* 'dans' noun 'avec' held" (donnant l'action Dig)
- regarder "sur" renvoie maintenant Search et non Examine, conformément à la lib anglophone
- Correction de la formulation "sauter par dessus (objet)" ou "sauter au dessus de (objet)" qui ne fonctionnait pas, car LanguageToInformese transforme le mot "dessus" en "sur -lui". Une fois adaptée la grammaire du verbe pour en tenir compte, ça marche.
- Message par défaut pour LookUnder : "Vos efforts ne produisent aucune découverte notable." au lieu de "Vous ne trouvez rien d'intéressant.", afin de moins suggérer qu'on a effectivement pu regarder sous l'objet en question (il est encore temps de se manifester si vous trouvez une meilleure formulation).
- Message par défaut pour Exit modifié de "Sortir d'où ?!" en "Vous n'êtes à l'intérieur de rien pour le moment.", plus proche de la version anglaise. Comme toujours je suis preneur des idées pour une meilleure formulation.
- Maintenant, si on tape "attacher le pied et la chaise", qui causait le message "Vous ne pouvez pas utiliser le mot tout (ou une liste) avec ce verbe", on a le message : "[reformulez : attacher ... avec ...]" (vieux problème soulevé par Eriorg lors du travail sur Lieux Communs). Cette solution n'est pas excellente mais il me semble que ça apporte une petite amélioration. Rappel : le problème, au départ, est lié au fait que "... et ..." est compris comme une liste et qu'on ne peut donc pas utiliser le mot 'et' comme préposition dans la définition d'une grammaire.
Samuel V.
Avatar de l’utilisateur
Stormi
Grand Ancien
 
Messages: 1205
Inscription: Dim Avr 16, 2006 8:07 pm
Localisation: Lyon

Re: Bibliothèque (French.h) : pistes d'amélioration

Messagepar Stormi le Dim Oct 19, 2008 8:07 pm

Voici une nouvelle modification :

- Modification des verbes "(se) lever" et "debout" : création de l'action SeLever qui ne fait que déterminer vers quelle action détourner la commande. Si le joueur est dans un objet, alors l'action est transformée en Exit, après avoir indiqué au joueur comment on a interprété sa commande : "(sortir de [l'objet])". Sinon l'action ne fait qu'afficher un message qui pour l'instant est "Inutile."
- la formulation "se lever de (objet)" est comprise

Le problème était que "se lever" est toujours automatiquement transformé en "sortir", ce qui peut causer des comportements génants. La correction n'est que partielle, mais je pense que c'est un petit 'mieux'.

La discussion sur flyspray : http://informfr.tuxfamily.org/flyspray/ ... task_id=24
Samuel V.
Avatar de l’utilisateur
Stormi
Grand Ancien
 
Messages: 1205
Inscription: Dim Avr 16, 2006 8:07 pm
Localisation: Lyon

Re: Bibliothèque (French.h) : pistes d'amélioration

Messagepar Otto Grimwald le Dim Oct 19, 2008 10:06 pm

très bien, j'ai adapté cela pour I7 également. J'ai essayé de faire de même pour les précédentes remarques, lorsque c'était possible.

je reviens là dessus :
- Message par défaut pour Exit modifié de "Sortir d'où ?!" en "Vous n'êtes à l'intérieur de rien pour le moment.", plus proche de la version anglaise. Comme toujours je suis preneur des idées pour une meilleure formulation.


le problème c'est que cela peut produire des ambiguïtés si par exemple l'auteur créé un tunnel ou un lieu qui implique fortement l'idée d'être à l'intérieur de quelque chose. Après on pourra dire aussi que cela est un défaut de conception de l'auteur, mais on pourrait aussi envisager d'écrire qque chose comme "Veuillez indiquer une direction précise svp" (ou ...direction cardinale...) car il peut aussi y avoir plusieurs sorties, d'où l'absence de out_to ...

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

Re: Bibliothèque (French.h) : pistes d'amélioration

Messagepar Eriorg le Lun Déc 08, 2008 10:21 pm

Un petit détail, qui m'est venu à l'esprit récemment en jouant aux jeux du concours... Le message de fin de jeu est actuellement :

Voulez-vous RECOMMENCER, CHARGER une partie sauvegardée ou quitter (QUITTER) ?

Y a-t-il vraiment besoin de mettre "quitter" 2 fois ? Il me semble qu'il suffirait de le mettre une seule fois, en majuscules :

Voulez-vous RECOMMENCER, CHARGER une partie sauvegardée ou QUITTER ?
Avatar de l’utilisateur
Eriorg
Grand Ancien
 
Messages: 855
Inscription: Jeu Déc 14, 2006 8:03 am
Localisation: Suisse

Re: Bibliothèque (French.h) : pistes d'amélioration

Messagepar Otto Grimwald le Lun Déc 08, 2008 11:23 pm

oui tu as raison. Historiquement il n'était peut être pas possible d'utiliser la commande "quitter". Dans mes archives j'ai trouvé qu'on avait déjà corrigé cela pour un des modes existant, je présume que c'était pour la version de lieux communs (ou c'était JB qui l'avait fait dans le code qu'on a récupéré de son jeu). J'ai retrouvé aussi une version avec marqué "ou quitter (QUIT)", ce qui pourrait expliquer cela mais cela n'a plus lieu d'être.

J'ai corrigé sur notre dépôt svn.

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

Re: Bibliothèque (French.h) : pistes d'amélioration

Messagepar Akien le Jeu Déc 18, 2008 11:08 pm

J'ai quelques pistes d'améliorations suite au retour d'Eriorg qui a pointé pas mal d'éléments dépendants des librairies sur mon jeu « Brume », et à des tests personnels.

Je cite:

Remarque 1 :
>x tiroir
Précisez : le tiroir de gauche ou le tiroir de droite?
> *Dans les demandes de désambiguïsation, il faudrait un espace avant le "?"
[Commentaire enregistré.]


Remarque 2 :
>x gélules
Vous ne pouvez pas employer le mot "tout" (ou une liste) avec ce verbe.
> *Ce n'est ni "tout" ni vraiment une liste. Ce serait mieux d'avoir une description des gélules.
[Commentaire enregistré.]

Ici c'est un problème qu'on avait commencé à approcher avec Stormi mais on a pas encore trouvé la solution miracle. Quand on définit des objets identiques, on ne peut pas agir avec eux en groupe pour certaines actions.
Otto, je vois que dans ton jeu « Lettres volées » le problème n'apparaît pas avec les enveloppes. Particularité d'Inform 7 ou as-tu trouvé une solution que je n'ai pas ?

Remarque 3 :
>ouvrir tiroir gauche
Vous ouvrez le tiroir de gauche.
> *Ça devrait nous dire, quand on l'ouvre, ce qu'il y a dedans (même si c'est juste pour dire que c'est vide), sans avoir besoin de l'examiner.
[Commentaire enregistré.]


Remarque 4 :
>x chambre
Vous n'y voyez aucune utilité.

Le nom "chambre" est dans la propriété 'name' du lieu de même nom, mais regarder le 'name' d'un lieu renvoie un message d'erreur. Je pensais pourtant que ça renvoyait 'look', mais peut être que l'erreur vient de mon code ?
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

Re: Bibliothèque (French.h) : pistes d'amélioration

Messagepar Otto Grimwald le Ven Déc 19, 2008 12:31 am

Otto, je vois que dans ton jeu « Lettres volées » le problème n'apparaît pas avec les enveloppes. Particularité d'Inform 7 ou as-tu trouvé une solution que je n'ai pas ?


en fait j'ai créé les timbres de la même manière que les enveloppes. Je soupçonne un synonyme de traîner quelque part et d'interférer. Effectivement, pour les pluriels, c'est des fois difficilement géré. D'un autre côté, avec les enveloppes quand on fait "x enveloppes", cela dit "rien de particulier concernant l'enveloppe". Cela me semble difficile de gérer cela pour plusieurs objets. Pour les timbres, qui marque le même message d'erreur que toi, j'ai feinté ainsi ensuite :

Code: Tout sélectionner
Understand "x timbres" or "regarder timbres" or "examiner timbres" as a mistake ("Lorsqu[']ils sont accessibles, ces objets ne sont pas à examiner collectivement.").


Je corrige sur le svn pour l'espace, j'espère que je suis bien tombé.

pour : Vous ouvrez le tiroir de gauche.
il me semble qu'inform ne précise qu'il y a qque chose que lorsque justement l'objet en contient un autre.

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

Re: Bibliothèque (French.h) : pistes d'amélioration

Messagepar Yoruk le Ven Sep 04, 2009 9:28 am

Vous pouvez me confirmer que la dernière version des bibliothèques francophones est bien la 2.3 :?:
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: Bibliothèque (French.h) : pistes d'amélioration

Messagepar Stormi le Ven Sep 04, 2009 9:33 am

La dernière qui ait été diffusée à tous oui. La 2.4 est en développement (au point mort ces derniers mois, il faudrait qu'on s'y remette pour la finaliser).

Note pour moi-même : il serait bon de sortir la 2.4 avant le concours.
Samuel V.
Avatar de l’utilisateur
Stormi
Grand Ancien
 
Messages: 1205
Inscription: Dim Avr 16, 2006 8:07 pm
Localisation: Lyon

Re: Bibliothèque (French.h) : pistes d'amélioration

Messagepar auraes le Mer Sep 22, 2010 5:43 am

Bonjour,
la routine LanguageNumber(n) située dans French.h pour inform 6 ou 7 est largement boguée.

LanguageNumber(123) affiche:
un centvingt-trois

LanguageNumber(1250) affiche:
un mille, deux centcinquante

LanguageNumber(300) affiche:
trois cent
(il manque le "s" à 300)
Avatar de l’utilisateur
auraes
Grand Ancien
 
Messages: 348
Inscription: Ven Avr 11, 2008 9:15 pm

Re: Bibliothèque (French.h) : pistes d'amélioration

Messagepar Otto Grimwald le Mer Sep 22, 2010 6:44 am

Bien vu.
J'ai constaté que cette partie avait été remaniée dans le code d'inform 6 (correction de "milles" en "mille"), mais il reste des incorrections.

En indiquant ce code à la place de ce qu'il y a au début, cela corrige pas mal de problèmes :

Code: Tout sélectionner
    [ LanguageNumber n f;
    if (n==0)    { print "zéro"; rfalse; }
    if (n<0)     { print "moins "; n=-n; }
    #Iftrue (WORDSIZE == 4);
    if (n >= 1000000000) {
        if (f == 1) print " ";
        print (LanguageNumber) n/1000000000, " milliards"; n = n%1000000000; f = 1;
    }
    if (n >= 1000000) {
        if (f == 1) print " ";
        print (LanguageNumber) n/1000000, " millions"; n = n%1000000; f = 1;
    }
#Endif;
    if (n >= 1000) {
        if (f == 1) print " ";
        if (n/1000 == 1) print "mille ";
            else print (LanguageNumber) n/1000, " mille";
        n = n%1000; f = 1;
    }
    if (n>=100)  {
        if (f == 1) print " ";
        if (n/100 == 1) print "cent ";
            else print (LanguageNumber) n/100;
            if (n%100 ~= 0) print " cent ";
                else print " cents";
        n=n%100; f = 1;
    }


j'ai commité le code sur le svn (inform 7 seulement)

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

Re: Bibliothèque (French.h) : pistes d'amélioration

Messagepar Stormi le Mer Sep 22, 2010 8:23 am

Otto, peux-tu poster le résultat de cette nouvelle routine pour les exemples d'auraes ?

Je pense qu'on peut la committer pour inform 6 également.
Samuel V.
Avatar de l’utilisateur
Stormi
Grand Ancien
 
Messages: 1205
Inscription: Dim Avr 16, 2006 8:07 pm
Localisation: Lyon

Re: Bibliothèque (French.h) : pistes d'amélioration

Messagepar Otto Grimwald le Mer Sep 22, 2010 12:50 pm

en fait ça serait plutôt ça :

Code: Tout sélectionner
[ LanguageNumber n f;
    if (n==0)    { print "zéro"; rfalse; }
    if (n<0)     { print "moins "; n=-n; }
    #Iftrue (WORDSIZE == 4);
    if (n >= 1000000000) {
        if (f == 1) print " ";
       print (LanguageNumber) n/1000000000, " milliards"; n = n%1000000000; f = 1;
    }
    if (n >= 1000000) {
        if (f == 1) print " ";
       print (LanguageNumber) n/1000000, " millions"; n = n%1000000; f = 1;
    }
#Endif;
    if (n >= 1000) {
        if (f == 1) print " ";
        if (n/1000 == 1) print "mille ";
           else print (LanguageNumber) n/1000, " mille";
        n = n%1000; f = 1;
    }
    if (n>=100)  {
        if (f == 1) print " ";
        if (n/100 == 1) print " ";
           else print (LanguageNumber) n/100;
           if (n%100 ~= 0) print " cent ";
              else print " cents";
        n=n%100; f = 1;
    }


j'ai essayé de faire un code qui permettrait d'entrer des valeurs (par exemple avec "compter 323412") et de donner le résultat, mais je n'y arrive pas encore. En entrant qques valeurs prédéfinies, j'ai cela avec le code au dessus (il y a encore quelques espaces en trop pour le moment, mais le reste semble correct) :

123 : cent vingt-trois.
1250 : mille deux cent cinquante.
2400 : deux mille quatre cents.
1251 : mille deux cent cinquante et un.
1142 : mille cent quarante-deux.
300 : trois cents.
552341 : cinq cent cinquante-deux mille trois cent
quarante et un.
45552341 : quarante-cinq millions cinq cent
cinquante-deux mille trois cent quarante et un.

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

Re: Bibliothèque (French.h) : pistes d'amélioration

Messagepar auraes le Mer Sep 22, 2010 12:56 pm

Code: Tout sélectionner
[ LanguageNumber n;   ! -32767 >= n <= +32767
   if (n == 0) { print "zéro"; rfalse; }
   if (n < 0) { print "moins "; n=-n; }
   if (n >= 1000) {
      if (n > 1999){ print (LanguageNumber) n/1000;  print " ";}
      print "mille";
      n = n%1000;
      if (n) print " ";
   }
   if (n >= 100) {
      if (n > 199){ print (LanguageNumber) n/100; print " ";}
      print "cent";
      if (n == 100) rfalse;
      n = n%100;
      if (n) print " "; else print "s";
   }
   if (n==0) rfalse;
   switch(n)
   {
      1:  print "un";
      2:  print "deux";
      3:  print "trois";
      4:  print "quatre";
      5:  print "cinq";
      6:  print "six";
      7:  print "sept";
      8:  print "huit";
      9:  print "neuf";
      10: print "dix";
      11: print "onze";
      12: print "douze";
      13: print "treize";
      14: print "quatorze";
      15: print "quinze";
      16: print "seize";
      17: print "dix-sept";
      18: print "dix-huit";
      19: print "dix-neuf";
      20: print "vingt";
      30: print "trente";
      40: print "quarante";
      50: print "cinquante";
      60: print "soixante";
      70: print "soixante-dix";
      71: print "soixante et onze";
      72 to 79: print "soixante-", (LanguageNumber) 10 + n%10;
      80: print "quatre-vingts";
      81 to 89: print "quatre-vingt-", (LanguageNumber) n%10;
      90 to 99: print "quatre-vingt-", (LanguageNumber) 10 + n%10;     
      default:
         print (LanguageNumber) n - n%10;
         if (n%10 == 1) print " et "; else print "-";
         print (LanguageNumber) n%10;
   }
];
! "mille un" mais pas "mille et un" ou "mille et une"
! "vingt et un, trente et un, etc" mais pas "vingt et une, trente et une, etc"
! "mille cent, mille deux cents, etc" mais pas "onze cents, douze cents, etc"
Dernière édition par auraes le Jeu Sep 23, 2010 11:14 pm, édité 5 fois.
Avatar de l’utilisateur
auraes
Grand Ancien
 
Messages: 348
Inscription: Ven Avr 11, 2008 9:15 pm

PrécédenteSuivante

Retourner vers Questions techniques et aide pour votre code

Qui est en ligne

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

cron