gilbert_
Messages postés1Date d'inscriptionmardi 23 mai 2006StatutMembreDernière intervention12 juillet 2006
-
12 juil. 2006 à 17:59
cs_bali_balo
Messages postés1378Date d'inscriptionsamedi 9 octobre 2004StatutMembreDernière intervention 1 novembre 2010
-
13 juil. 2006 à 10:17
Bonjour tout le monde !
Je me suis mis en tête de réaliser mon code perso de pathfinding
inspiré du célèbre A* , je touche preske au but, lorsque le chemin
n'est pas trop compliqué mon script marche, mais dès lors que celui-ci
devient trop long, la console m'indique qu'il y a plus de 256 niveaux
de récursions et que l'action a été arrêtée, et je ne comprend pas trop
pourquoi, car je n'ai pas l'impression d'avoir une boucle infinie...
Voila le code si quelqu'un est motivé pour trouver d'ou vient l'erreur.
Sur la précendente frame j'ai créé un tableau de de 40 cellules sur 30
chacune nommée "casex_y" avec une propriété traversable initialisée sur
true ou false.
Merci d'avance !
Gilbert
liste_ouverte = [] ;
liste_fermee = [] ;
case_en_cours = case1_1;
case_en_cours.x = 1;
case_en_cours.y = 1;
case_en_cours.cout_parcouru = 0;
case_finale = case28_28;
case_finale.x = 28;
case_finale.y = 28;
ajout_liste_fermee(case_en_cours);
//fonction qui ajoute a la liste fermée
function ajout_liste_fermee(case_en_cours )
{
trace("ajout_liste_fermee");
//trace(case_en_cours.parent);
//trace(case_en_cours);
//on degage le premier élement de la liste ouverte
liste_ouverte.splice(0,1);
liste_fermee.push(case_en_cours);
//on precise que la case fait partie de la liste fermee
case_en_cours.fermee = true;
// on detecte les cases autour de la case en cours
if( case_en_cours != case_finale)
{
detection_cases(case_en_cours);
case_finale.parent = case_en_cours;
}
else
{
dessine_chemin( case_finale );
}
}
function detection_cases (case_en_cours)
{
trace("detection_cases");
_root.clic = 0;
_root.clic2 = 0;
//boucle qui permet de regarder les cases autour de la case ou l'on se situe