Comprer deux tableaux de nombres avec une marge d'erreur ?

Kangouroops Messages postés 21 Date d'inscription lundi 27 avril 2009 Statut Membre Dernière intervention 15 mars 2010 - 14 mars 2010 à 13:19
Kangouroops Messages postés 21 Date d'inscription lundi 27 avril 2009 Statut Membre Dernière intervention 15 mars 2010 - 15 mars 2010 à 15:29
Bonjour à tous,
Je suis entrain de faire un petit jeu de tangram, et je cherche à comparer toutes les valeurs de deux tableaux en autorisant une marge d'erreur dans les réponses. Mais je ne sais pas faire. (je suis en as3)

L'idée c'est que j'ai ma scène avec mon fond ou j'ai une ombre approximative du rectangle pour que l'utilisateur sache à peu près où il doit placer les pièces,
Il y a deux "réponses" justes possibles.

Je suis parti sur l'idée que je devais récupérer les positions X et Y de mes éléments et les inscrire dans un tableau à deux dimensions à chaque déplacement de pièce.
ex: pieces_xy = [[piece1.x, piece1.y],[piece2.x, piece2.y], etc...]
Dans deux autres tableaux j'ai mis les bonnes positions.
ex: check1 = [[120, 230], [140, 230], etc...]

Maintenant, il faudrait que je compare les valeurs de mes tableaux en permettant une marge d'erreur... et là, je bloque complètement.
Il faudrait que je vérifie quelque chose comme ça: pieces_xy == check1 avec pour chaque valeur + ou - 20.

C'est peut-être tout bête mais je ne sais pas du tout comment faire.
Si quelqu'un a une idée, je suis preneur.
Merci d'avance.

1 réponse

Kangouroops Messages postés 21 Date d'inscription lundi 27 avril 2009 Statut Membre Dernière intervention 15 mars 2010
15 mars 2010 à 15:29
Salut tout le monde,
Je suis entrain d'essayer une fonction, mais je n'y suis toujours pas.
J'ai un peu de mal à me rendre compte de ce que je dois faire pour que la fonction me renvoie ce que je veux.

		public function fcheck1():Boolean{
var i:int;
for (i 0; i sac_xy.length; i++){
var j:int;
for (j 0; j 1; j++){
var k:int;
for (k -nmarge; k nmarge; k++){
if ((sac_xy[i][j] + k) != check1[i][j]) return false;
}	
}
}
return (true);
}


Sachant que l'idée c'est que je renvoie true uniquement si toutes les valeurs inscrites dans le tableau sac_xy correspondent aux valeurs du tableau check1, avec une possibilité que ces valeurs ne soient pas tout à fait égales, d'où la marge d'erreur k = nmarge.
Seulement voilà, je sais que mon code ne fait pas ce que je veux, mais j'ai du mal à percevoir ce que je dois faire.
Si quelqu'un a une idée, je suis preneur.
Merci d'avance.
0