04-03-2009, 11:45 PM
Bonsoir,
Alors voilà mon problème :
J'ai un système de carte à case, avec mes unités dessus, jusque là pas de problème.
Lorsque je clique sur une unité, je voudrais que mon système me renvoie toutes les cases où mon unité peut avancer suivant un nombre de point de mouvement (PM).
Chaque case à un coût.
Mon idée de base est de me calculer tous les chemins le plus court possibles.
Pour cela, je dois me faire un arbre...
J'ai fait mon arbre, pas de soucis, mais j'ai un grave problème de performance.
Ayant un système "classique" (pas hexagonale... encore heureux...), j'ai donc 8 coordonnées pour chaque branche... Et comme vous le savez avec les arbres, plus on monte dans les niveaux, plus il y a de feuilles... (récursif powaa ). Du coup, arrivé au niveau 6 (potentiellement 6 cases tout autour de mon départ), ça met déjà 9 secondes (299593 coordonnées...).
Le soucis, c'est que je compte aller plus loin tout de même à chaque fois (genre 10 voir 20 cases à la ronde) ; j'ai essayé 10 niveaux... ça tourne depuis 5 minutes... ^^).
Je me demandais donc s'il y avait d'autres moyens pour faire ce genre de chose mis à part du récursif et système d'arbre.
PS : j'ai utilisé des arrays avec des array_push, je n'ai pas testé avec d'autre type de variable ; ça joue peut-être.
C'est le seul point bloquant dans mon projet... et une fois résolu, ça sera tout bonheur, pas cool donc :pleure2:
Merci par avance de votre aide, j'espère avoir été clair dans mon explication
Alors voilà mon problème :
J'ai un système de carte à case, avec mes unités dessus, jusque là pas de problème.
Lorsque je clique sur une unité, je voudrais que mon système me renvoie toutes les cases où mon unité peut avancer suivant un nombre de point de mouvement (PM).
Chaque case à un coût.
Mon idée de base est de me calculer tous les chemins le plus court possibles.
Pour cela, je dois me faire un arbre...
J'ai fait mon arbre, pas de soucis, mais j'ai un grave problème de performance.
Ayant un système "classique" (pas hexagonale... encore heureux...), j'ai donc 8 coordonnées pour chaque branche... Et comme vous le savez avec les arbres, plus on monte dans les niveaux, plus il y a de feuilles... (récursif powaa ). Du coup, arrivé au niveau 6 (potentiellement 6 cases tout autour de mon départ), ça met déjà 9 secondes (299593 coordonnées...).
Le soucis, c'est que je compte aller plus loin tout de même à chaque fois (genre 10 voir 20 cases à la ronde) ; j'ai essayé 10 niveaux... ça tourne depuis 5 minutes... ^^).
Je me demandais donc s'il y avait d'autres moyens pour faire ce genre de chose mis à part du récursif et système d'arbre.
PS : j'ai utilisé des arrays avec des array_push, je n'ai pas testé avec d'autre type de variable ; ça joue peut-être.
C'est le seul point bloquant dans mon projet... et une fois résolu, ça sera tout bonheur, pas cool donc :pleure2:
Merci par avance de votre aide, j'espère avoir été clair dans mon explication