[PHP] Algorithme Astar sur tuile hexagonale - Version imprimable +- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org) +-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38) +--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51) +--- Sujet : [PHP] Algorithme Astar sur tuile hexagonale (/showthread.php?tid=5653) |
RE: Algorithme Astar sur tuile hexagonale - Hideaki - 21-08-2011 Ta formule heuristique des coût est à changer,
Tu peux utiliser la même formule pour les cases carrés et hexagonales.Concernant la forum de Manathan, je ne vois pas pourquoi tu l'as multiplier par 10 ( cela sert à rien), je te conseillerais d'utiliser la formule euclidienne qui un aspect plus naturel au déplacement. http://fr.wikipedia.org/wiki/Distance_(mathématiques)#Distance_sur_des_espaces_vectoriels Ton coût g est le coût de déplacement déjà effectué, le + 14 ou le + 10 ne sert à rien. RE: Algorithme Astar sur tuile hexagonale - Maz - 21-08-2011 (21-08-2011, 03:28 PM)Hideaki a écrit : Ta formule heuristique des coût est à changer,Je multiplies par 10 car un déplacement = 10. Le +14 et +10 servent: en fait je récupère le cout g du parent, auquel j'ajoutes 10 ou 14. Si je n'ajoutes pas 10 ou 14, g vaudras toujours 0. RE: Algorithme Astar sur tuile hexagonale - Hideaki - 21-08-2011 Voici un lien en français http://khayyam.developpez.com/articles/algo/astar/ Ce n'est pas à ta fonction de calcul des coûts de définir g, g est le coût de déplacement déjà effectué. RE: Algorithme Astar sur tuile hexagonale - Maz - 21-08-2011 (21-08-2011, 03:48 PM)Hideaki a écrit : Voici un lien en français http://khayyam.developpez.com/articles/algo/astar/Ok pigé. En fait je n'ai qu'à incrémenter une variable pour savoir le nombre d'itération de la boucle qui a été exécuté, et g vaudras cette variable*10(j'y tiens à mon *10 ^^') EDIT: et oui mai snon. Comment peut-on connaître le coût de déplacement déjà effectué si on ne passe par par son parent? C'est pas pensable si on prends les diagonale = 14. RE: Algorithme Astar sur tuile hexagonale - Hideaki - 21-08-2011 Tout simplement en le fournissant à ta fonction en paramètre, il utilise une structure, c'est pour cela que je t'ai dit de le faire en objet. J'avoue ne pas comprendre pourquoi tu souhaites mettre un coût à 14 alors qu'il s'agit d'une case adjacente, il s'agirait d'une case particulière... Ne fessant pas de PHP et ne voulant pas en faire, je ne pourrais pas te fournir un algo en php et ceux trouver sur le net ne me satisfait pas. Ajoute ton nouveau code simplifier clair etc et je pense que niahoo pourra t'aider facilement pour le côté php. RE: Algorithme Astar sur tuile hexagonale - Maz - 21-08-2011 Le coût à 14 est pour déprécier les déplacement en diagonales. Et dans le futur (lorsque ce seras opérationnelle) j'aurais surement aussi des coûts à 20, 25 etc... pour les déplacement dans de l'eau par exemple qui sont plus "long" que sur la terre ferme. Enfin l'eau c'est juste pour pousser le vice, mais je tiens à ce 14. EDIT: et le passage en paramètre du cout du déplacement "parent", c'est déjà ce que je fait o.0 RE: Algorithme Astar sur tuile hexagonale - niahoo - 21-08-2011 peut être En tout cas je ne comprends pas le coup des 14 puisque on est en cases hexagonales ! elles sont toutes équidistantes. RE: Algorithme Astar sur tuile hexagonale - Hideaki - 21-08-2011 je comprends pour l'eau etc mais j'ai la même réflexion que nihaoo ^^ Edit: Pour le joueur hormis deux cases tout est en diagonal RE: Algorithme Astar sur tuile hexagonale - Maz - 21-08-2011 (21-08-2011, 05:59 PM)niahoo a écrit : peut être Ok, je comprends pourquoi vous vous obstiné sur ce 14 et c'est entièrement de ma faute. Dans le soucis de proposer à la communauté un script qui gères les cases carrés & hexagonales, on peut choisir le mode, les trois premier mode sont pour les tuiles carré. Donc si on regarde de plus près:
Ceci ne seras exécuté que sur les carte à tuile carré!J'aurais du vous montrer la fonction casesAdjacentes, où tout est expliqué:
EDIT: d'ailleurs c'est éronné, celà devrait etre if $mode == 3, je viens de le corriger sur mon code local EDIT²: vous pouvez voir le rendu pour les carte à tuiles carrés ici. EDIT^3: après quelque F5 en mode 3, j'ai remarqué que le problème de parenté se posé ici aussi. (voir pièce jointe). EDIT^4: et pire en mode 1... Mon script à vraiment un problème =( EDIT^5: ma classe actuelle est la suivante: http://mazdesign.free.fr/aStar/class-highlight.html au vue des derniers rendu en mode "carré", je vais plutôt me pencher sur un problème sur la liste ouverte et non parent. RE: Algorithme Astar sur tuile hexagonale - Hideaki - 21-08-2011 Petit conseil : au lieu de faire n modes, fait plutôt des classes représentant chaque mode(plus simple à débugger) et tu n'auras plus qu'à modifier chaque spécificité, d'autre part il sera plus simple d'ajouter de nouveau mode, comme une forme triangulaire sans tout à avoir à modifier. |