Il y a encore un soucis sur ton site avec l'exemple sur parse_name : (http://www.hlabrande.fr/if/inform6trucs.html)Mule hollandaise a écrit:Merci d'avoir corrigé mon code, en effet j'ai (encore) oublié w = NextWord()....... (c'est la quatrième fois ^^')
- Code: Tout sélectionner
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 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) :
- Code: Tout sélectionner
[ 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;
];
- Code: Tout sélectionner
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.