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

Pour tester LanguageNumber (n) :

! Avec n >= 0  && n <= 10000 (interval imposé par number.)
[ NombreSub;
	 print (LanguageNumber) noun, "^";
];
[ NombreToSub i;
	if (second == noun) print (LanguageNumber) noun, "^";
	if (second < noun)
		for (i = noun : i >= second : i--)
				print (LanguageNumber) i, "^";
	if (second > noun)
		for (i = noun : i <= second : i++)
				print (LanguageNumber) i, "^";
];
Verb 'nbr'
	* number -> Nombre
	* number number -> NombreTo
;
! > nbr 123
! > nbr 123 150
! > nbr 150 123
Sinon évidemment :
for (i = -32767 : i <= 32767 : i++)
    print (LanguageNumber) i, "^";

Il manque aussi une espace avant et après le " h " dans LanguageTimeOfDay

[ LanguageTimeOfDay hours mins;
    print hours/10, hours%10, "h", mins/10, mins%10;
];
! 10h30 10h00
[ LanguageTimeOfDay hours mins;
    print hours/10, hours%10, " h";
    if (mins > 0) print " ", mins/10, mins%10;
];
! 10 h 30  10 h
C'est mieux et cela respecte les règles typographiques.

Quelques bogues et suggestions Inform6:

Verb ‹ manger › ‹ devorer ›
* ‹ de/du › held → Eat;

  • ‹ de ›/‹ du › held → Eat;

Verb ‹ boire › ‹ avaler › ‹ siroter ›
* ‹ de ›/‹ du › ‹ l^ › noun → Drink

‹ l^ › pour boire de l’eau, mais c’est un article, il est inutile ici.

* 'à'/'a'/'au'/'aux'/'sur' noun             -> ;

Quel est l’intérêt de supporter la préposition « à » avec accent dans la grammaire si ce n’est de l’alourdir, alors que de toute façon les verbes de la grammaire ne les supportent pas!

Verb ‹ enlever › ‹ oter › ‹ retirer ›
* held → Disrobe
* multiinside ‹ de ›/‹ du ›/‹ des ›/‹ d^ › noun → Remove;

  • noun → Take
    (enlève le rocher, le vase, …)

Il manque « verser » (renverser) comme synonyme usuel

En effet, bien vu.

Cela semble logique oui, me semble inutile à moi aussi.

Que veux-tu dire par « ne les supportent pas » ? Chez moi ça marche, et c’est grâce à ce ‹ à › dans la grammaire. Et sans ça ne fonctionne pas.

Faut voir, j’ai peur d’effets de bord, genre j’ai mon manteau dans les mains et je crois qu’il est sur moi. Je fais « retirer le manteau » et il me dit « Mais vous l’avez déjà ! » => bof :slight_smile:

Noté.

Merci :slight_smile:

Mon exemple est faux :slight_smile: Je suis ni pour ni contre cette modif, d’autres ont un avis ?

Concernant la préposition « à » avec l’accent dans FrenchG.h :

Soit les accents sont supprimés après la saisie :

répondre à bob = repondre a bob
Dans ce cas le support de « à » par la grammaire n’a aucun intérêt.
Verb ‹ repondre ›
‹ a › creature →

Soit les accents ne sont pas supprimés après la saisie :

répondre à bob
Mais dans ce cas la grammaire doit supporté le « à » mais aussi l’accent sur le « é » de « répondre. »
Verb ‹ répondre › ‹ repondre ›
‹ à › /‹ a › creature →

Ce n’est pas si simple. La suppression des accents intervient avant certaines choses, et après d’autres.

Globalement les accents sont supprimés pour les verbes et les noms, et pour tout en fait SAUF que inform essaie de matcher la grammaire d’un verbe AVANT que l’accent ne soit supprimé de la préposition, d’où cette nécessité exceptionnelle de gérer les accents dans les prépositions au sein des grammaires de verbes. Pour le nom des verbes en revanche ça fonctionne sans problème.

je ne suis pas contre la modif en question.

Pour les prépositions, il me semble aussi que si on n’ajoute pas le ‹ à ›, ça coince. Et je crois (à vérifier), que le parser ne supprime les accents que pour les noms et les verbes, et pas dans le cas de ces prépositions.

Vous êtes pour le moins bizarre !?

Mais puisque le joueur peut ne pas saisir les accents, les routines sont censés fonctionner selon que la préposition « à » ait un accent ou pas !

Les seuls intérêts de conserver les accents à la saisie sont :

  • pour le verbe écrire : Si le joueur écrit quelque chose cela doit s’afficher tel qu’il l’a écrit et sans fautes d’orthographes (donc avec les accents s’il les a saisies.)
  • pour différencié un « dé » à jouer (ou de couture) de la préposition/article partitif « de »
  • pour différencier éventuellement des verbes qui diffèrent seulement par leurs accents. (ex : ?!; De toute façon la grammaire actuelle ne supporte pas les accents sur les verbes.)

  • LanguageToInformese() intervient après la saisie donc bien avant que cela n’est un sens
    quelconque pour les librairies.
    Votre routine enlève_accents() parcoure chaque lettres de la saisie et supprime les accents. Elle n’a évidement aucune notion de ce qu’est un verbe, une préposition, etc.
    Je lis d’ailleurs ça dans LanguageToInformese(); Je cite :
    « enleve_accents(); ! sinon « à » n’est pas reconnu !*! placer cette fonction encore plus en amont ? »

Mais j’ai beaucoup mieux !
Question :
Pourquoi, alors que la grammaire actuelle du verbe « manger » est boguée cela fonctionne ?
Verb ‹ manger ›
* held → Eat
* ‹ de/du › held → Eat ; (‹ de/du › à la place de ‹ de ›/‹ du ›)
« > manger du sucre et de la confiture »
O.K.
Et cela même si la grammaire du verbe était :
Verb ‹ manger ›
held → Eat
Donc « * ‹ de/du › » ne sert à rien et cela est vrai pour tous les verbes de la grammaire.

La grammaire du verbe « prendre » actuelle est la suivante :
Verb ‹ prendre ›
* multi → Take
‹ de ›/‹ du › n’apparaissent pas pourtant cela fonctionne !
« > prendre de la confiture et du sucre »
O.K.

J’ai la réponse.

Et c’est le cas.

Donc l’accent sur le « à » dans la grammaire ne sert à rien.

Je n’ai toujours pas compris pourquoi il ne sert à rien, puisque SANS lui on ne peut pas taper « parler à toto », mais AVEC lui on peut taper « parler à toto »… Et il ne fait de mal à personne, si ?

On doit supporter à la fois ceux qui tapent « parler à » et ceux qui tapent « parler a », et pour les prépositions, j’ignore pourquoi mais c’est comme ça, on doit préciser les deux alternatives explicitement dans la grammaire.

Cela doit être ce que l’on nomme la « logique floue .»

  • La grammaire supporte les mots avec accents.
  • La grammaire ne supporte pas les mots avec accents.
  • La grammaire supporte les mots avec et sans accents.
    Logique.
  • La grammaire supporte « UN PEU » les mots avec accents.
    Logique floue!

Concernant la SVN inform7 de LanguageNumber(n), à vue d’œil et sans tests j’aperçois :

" milliards", " millions" au pluriel mais pas au singulier ; Je m’inquiète !
Pourtant « un milliard, un million » ne prennent pas la forme du pluriel.

" cents", " cent ", "cent " mais pas « cent » sans espaces !
Pourtant « 100 » s’écrit « cent » sans espaces.
Ceci-dit cent est plutôt gratiné :
cent
trois cents
trois cent dix
mille cent = onze cents
cent mille
cents millions
cinq cents millions
etc

Votre grammaire ne peut pas supporter :

donne-le-lui (ou donne-la-lui, donne-les-leur, donne-lui la pomme, etc)
Pour au moins deux raisons :

  • Votre table de pronoms et fausse
  • Votre grammaire est incomplète.

Verb ‹ donner ›
* held ‹ -> ›/‹ à ›/‹ a ›/‹ au ›/‹ aux › creature → Give
‹ -> ›/‹ à ›/‹ a ›/‹ au ›/‹ aux › creature held → Give reverse;
« donner » attend une préposition '/‹ à ›/‹ a ›/‹ au ›/‹ aux › dans tous les cas de figure.
Il manque : * held creature → Give

Ma librairie fonctionne très bien :

donne-la-lui (donne la pomme à bob)
Verb ‹ donne ›
* held creature → Give ! donne-la-lui
* creature held → Give reverse ! donne-lui la pomme
* held ‹ a › creature → Give ! donne la pomme à Bob
;
held = -la = pomme
creature = -lui = Bob
O.K.

!% +include_path=./,./Lib/Base,./Lib/Contrib
!% +Language_name=French
!!% -v8
Constant Story "MYGAME1";
Constant Headline "^My first Inform game.^";
!Constant MANUAL_PRONOUNS;

Include "Parser";
Include "VerbLib";

object parc "parc"
	with 
		description "Le parc aux promoms.",
	has light
;
object bob "bob" parc
	with
		name 'bob',
		description "c'est bob!",
	has static animate male proper
;
object pomme "pomme" parc
	with	
		name 'pomme',
		description "c'est une pomme!",
	has edible female
;
[ Initialise;
	 location = parc;
   ! "^Test des pronoms!^";
];

Essayez!
Voilà, je vous laisse. Bonne continuation.

moi je ne m’inquiète pas trop quand même : j’ai pas mal d’autres choses à faire, et cela ne fait pas partie de mes priorités. C’est bien si cela peut être amélioré, mais la probabilité pour qu’un auteur de jeu utilisant Inform 7 ait à la fois besoin d’écrire des nombres en toutes lettres, et en plus utilise des valeurs plus hautes que le millier, et en plus tombe justement sur 1 milliard et pas 2 ou 3 ou 9 milliards, et ben elle se chiffre sans doute en rapport avec ces valeurs incriminées.

Un parser à pronoms à tester avec le librairies 6/12 et la dernière version du compilateur. Il est très tolérant sur la saisie et permet de saisir des ordres : Bob, donne… : http://auraes.free.fr/inform6/pronoms.z5

Le Mer Fév 20, 2008 1:11 am (page 2)

Suite à des recherches pour le fonctionnement de la prise d’un objet « automatique », je suis tombé là dessus, et je me dis que le « en prenant d’abord » n’est peut etre pas si mal, si on n’utilise pas la narration à la deuxième personne du pluriel.

En testant Homeland Security, quelques personnes se sont aperçues que certaines réponses par défaut introduisaient des incohérences dans le jeu. Par exemple, on peut crier, chanter ou sauter sur place alors qu’on se cache derrière une caisse !

C’est un problème récurrent, qui introduit un nombre de bugs (au sens Label Mimésis du terme :slight_smile: ) assez incalculable (du genre on peut toucher ou goûter le soleil ou tout autre objet éloigné dans énormément de jeux, juste parce que l’auteur n’a pas pensé à intercepter ces actions). Du côté de l’auteur, c’est très frustrant : il faut connaître la liste des verbes qui font des actions automatiquement dans leurs réponses par défaut (goûter, toucher, danser, crier, sauter, saluer, chanter, il me semble) et se poser la question à chaque fois si c’est cohérent avec la situation. Bien sûr, on ne le fait pas, et ça fait des bugs - certes invisibles pour la plupart des joueurs, qui n’essaieront pas forcément ces verbes, mais quand même. Après, bien entendu, les auteurs oublient parfois de mettre des réponses qui sembleraient cohérentes, et c’est un autre problème :slight_smile:

Est-ce qu’on ne pourrait donc pas réfléchir à reformuler ces réponses par défaut de sorte à ce qu’elles ne fassent pas d’action, mais à la place trouvent une raison pour ne pas le faire ? Je pense que ça simplifierait la vie de beaucoup d’auteurs :slight_smile: C’est sûr, on s’éloignerait peut-être un peu de la traduction de l’anglais, mais je pense que c’est pour le mieux. Par exemple :

Chanter -> "Vous ne chantez pas très bien"
Goûter -> "Vous préférez garder votre langue dans votre bouche"
Toucher -> "Vous ne mettez pas vos mains partout"
Crier -> "Vous avez peur que quelqu'un vous entende" (même si ça n'irait pas dans toutes les situations, par exemple les jeux post-apocalyptiques !)
Saluer -> "Votre timidité prend le dessus au dernier moment"
Danser -> "Vous dansez très mal"
Sauter -> "Vous ne voyez pas à quoi ça vous avancerait"

(c’est un brouillon rapide, c’est à améliorer)

Et tant que j’y suis, la réponse à >écouter x (« Vous n’entendez rien de particulier ») ne me plaît pas non plus, vu que ça dit qu’on n’entend rien même si on est, par exemple, dans une boîte de nuit… Est-ce qu’on pourrait réfléchir à un truc du genre « Ca ne fait pas de bruit particulier » ?

Si tu mets systématiquement un default: dans tes before ou after de chaque objet, tu t’évites bien des soucis.Soleil: before [; take, touch: "[...]"; burn: [...]; go, climb: "[...]' default: "Indifférent, il vous inonde d'une lumière qui l'épuise."; !hi hi hi... c'est du lourd! ],
Si un objet suscite trop de messages par défaut, c’est peut-être qu’il n’a pas ou n’est pas à sa place dans le jeu. Un objet porte, s’il est là pour « meubler », s’il ne constitue pas un obstacle d’un intérêt réel, un « verrou » dans le game design : que fait-il là !?

Pour ceux qui utilisent Inform6 et les librairies, vous pouvez mettre cela dans votre code pour déboguer; c’est très utile, cela permet d’identifier, d’intercepter et de résoudre beaucoup de problèmes. [ ParserError error_type; print "* "; switch (error_type) { STUCK_PE: print"STUCK_PE ",1; UPTO_PE: print"UPTO_PE ",2; NUMBER_PE: print"NUMBER_PE ",3; CANTSEE_PE: print"CANTSEE_PE ",4; TOOLIT_PE: print"TOOLIT_PE ",5; NOTHELD_PE: print"NOTHELD_PE ",6; MULTI_PE: print"MULTI_PE ",7; MMULTI_PE: print"MMULTI_PE ",8; VAGUE_PE: print"VAGUE_PE ",9; EXCEPT_PE: print"EXCEPT_PE ",10; ANIMA_PE: print"ANIMA_PE ",11; VERB_PE: print"VERB_PE ",12; SCENERY_PE: print"SCENERY_PE ",13; ITGONE_PE: print"SITGONE_PE ",14; JUNKAFTER_PE: print"JUNKAFTER_PE ",15; TOOFEW_PE: print"TOOFEW_PE ",16; NOTHING_PE: print"SNOTHING_PE ",17; ASKSCOPE_PE: print"ASKSCOPE_PE ",18; } print " *^"; rfalse; ]; À mettre entre Include « parser »; et Include « verbLib »; Après il faut se référer à la documentation, page 237, pour les détails de chaque erreur.

Pas bête le coup du default, quoi qu’il en soit, il me semble juste de modifier les réponses de base pour certains verbes. Notre but a toujours été de donner des réponses par défaut les plus neutres possibles, et celles proposées ici me semblent pertinentes, et ne devraient pas remettre en cause l’expérience des jeux existants.

À force de créer de nouveaux jeux, c’est le type de chose dont on peut se rendre compte au bout de quelques années d’expérience. Tu pourrais intégrer ces nouveaux textes sur le SVN des bibliothèques I6 ?

On pourrait également s’en inspirer pour les bibliothèques d’I7, et je crois d’ailleurs que Natrium avait un peu amélioré certains textes.

Ok, j’essaie de faire ça bientôt et je vous tiens au courant !