Il y a encore un soucis sur ton site avec l’exemple sur parse_name : (hlabrande.fr/if/inform6trucs.html)parse_name [ n w;
w = NextWord();
while(w) {
if (w = 'nom' && action_to_be == ##Action && condition)
n=n+10;
else
n++;
w = NextWord();
}
return n;
],Il n’y a aucune raison d’incrémenter n (n++) si aucune des conditions n’est satisfaite.
Il y a aussi une erreur : w == ‹ nom › pas w = ‹ nom ›.
NextWord() pose d’autres problèmes : il parcourt l’intégralité de la phrase. Donc, si celle-ci est composée de plusieurs commandes séparées par THEN(1-3)__WD, le résultat de n peut-être erroné.
« >examine la pomme puis mange la pomme. » Ici, n pour ‹ pomme › vaut 2 au lieu de 1.
Il vaut mieux vérifier que NextWord() soit différent de THEN1__WD : While (w && w ~= THEN1__WD) ou mieux While (w && w ~= THEN1__WD or THEN2__WD or THEN3__WD)
Dans les bibliothèques (zcode & glulx) :[ NextWord i j;
if (wn > parse->1) { wn++; rfalse; }
i = wn*2-1; wn++;
j = parse-->i;
if (j == ',//') j = comma_word;
if (j == './/') j = THEN1__WD;
return j;
];Il manque éventuellement des paramètres pour : j == ‹ .// ›
if (j == './/' or THEN2__WD or THEN3__WD) j = THEN1__WD;
Il y a aussi une erreur dans tes Petits trucs bien utiles en Inform 6, concernant Life : il manque Order.
Oui, tu as raison, ça doit être « si c’est le bon mot, alors si c’est la bonne action donner un plus gros score » !
Et merci aussi pour Order, j’avais oublié !
Pour ce qui est de THEN, j’avoue que je ne sais pas ce qui se passe à ce moment-là : est-ce que le parser coupe en plusieurs commandes, mais seulement après que parse_name ait fait son oeuvre ?
Et si j’ai bien compris, le bug du NextWord(), une fois qu’il est résolu, plus besoin de THEN2__WD et THEN3__WD dans le test ?
Et si le but de mon code c’est juste de désambiguer, est-ce que c’est grave si je ne fais pas le test pour THEN1__WD ? Il me semble que même si je ne fais pas le test ça a quand même pour effet de désambiguer. Après, les scores seront peut-être « anormaux », mais je sais pas si ça a grande importance en terme de comportement du jeu… ?
Non, j’avais vérifié : il parcourt bien l’intégralité de la phrase.
Ce n’est pas un bogue, mais encore une bizarrerie… ça faciliterait effectivement la tâche.
Pour l’instant, cela pose problème pour la 6/11 et la 6/12 : http://www.intfiction.org/forum/viewtopic.php?f=7&t=15730&p=80638#p80637
S’il y a bogue et qu’il est corrigé, je ne vois pas pourquoi cela ne continuerait pas à poser des problèmes (si tu trouves dans la énième phrase, ce que tu cherches dans la première…)