(28-07-2014, 05:09 PM)Argorate a écrit : Pas forcement. Si le chemin le plus court est la ligne droite mais qui est bloqué une case avant l'objectif par exemple. L'algo lui, va continuer a essayer d'autres combinaisons (par exemple faire un grand détour) et échoué quand même, mais tout ça pour dire que la dernière tentative de l'algo n'est pas forcement la plus courte en cas de "non chemin à l'objectif". Tu vois?
Il me semble que ta case la plus proche aura quand même le meilleur score, car celui-ci est calculé à vol d'oiseau. Je ne suis pas sur. Mais pour chaque case de la closed list tu as plusieurs valeurs et il doit y en avoir une qui correspond à ce que je veux dire.
Voilà tu peux voir sur l'image ci dessous que les deux cases les plus proches de la case d'arrivée (rouge) ont leur chiffre en bas à droite de la case égal à 20. C'est le chiffre minimum sur tout le plateau.
(28-07-2014, 06:17 PM)Xenos a écrit : Et stocker le "meilleur chemin trouvé même s'il va pas jusqu'au bout" puis stopper A* quand la longueur du chemin en court de calcul devient trop grande?
Effectivement, limiter la zone de calcul peut être intéressant. C'est parfois le rôle du brouillard de guerre.
(28-07-2014, 06:17 PM)Xenos a écrit : Pour ce qui est du "meilleur chemin", à toi de voir si tu te bases sur le chemin qui amène au plus près de la cible, ou si tu préfères pondérer entre distance à la cible et nombre de directions possibles (aka, choisir le chemin qui va au plus près de la cible pourrait fourvoyer l'unité dans un corridor étroit dont elle sera de toute façon obligée de ressortir si elle veut aller vraiment sur la cible).
Là je suppose que c'est selon le gameplay. Si c'est un joueur qui clique, (et mettons qu'un chemin possible existe, inconnu du joueur (à cause du brouillard ou autre), alors il cliquera sur les zones non connues alentour pour trouver ce chemin. Si c'est le jeu qui gère tout alors on retrouve ce choix de laisser le personnage bloqué dans le corridor, ou bien imiter une action humaine en effectuant des cercles autour des murs bloquant la zone pour trouver un moyen d'avancer.