J'ai essayé d'implémenter l'algorithme de pathfinding A* dans Flash, à l'aide du lien donné dans un post précédent.

Pour optimiser un peu, au lieu de créer des "listes" pour les 'open list' et 'close list', j'ai créé des tableaux à deux dimensions de même taille que la carte, ainsi accessibles directement par les coordonnées correspondantes au point de la carte que l'on utilise.Par contre, je n'ai pas implémenté le contour des murs, ce qui fait qu'on peut passer en diagonale de la case [ 2 ] à la [ 3 ], et de la [ 3 ] à la [ 4 ]. Vous voyez ici le visuel qui en résulte.

Mais le problème n'est pas la : j'ai fait en sorte que les déplacements en diagonale soient plus couteux que ceux en ligne droite (multipliés par 1.4), et j'ai intégré une notion de cout selon la nature du terrain (les cases vertes ont un coût de 10, et la case jaune un coût de 15). Vous constatez donc que le chemin emprunté n'est pas le bon ... mais pourquoi ?
En fait, l'algorithme A* fait une recherche dans les cases autour de la case en cours, et garde celle qui a le cout "total" le plus petit ("cout total" = "cout de parcour" + "cout restant à parcourir" : voir le lien avec l'algo). Or, dans ce cas précis, la case [ 2 ] et la case [ 2' ] ont le même coût, et le choix dépend donc de la comparaison faite lors du choix du minimum : soit un utilise '<' (strictement inférieur), soit on utilise '<=' (inférieur ou égal). Bref, dans les deux cas, il faut en choisir une, sans savoir s'il s'agit de la bonne ou pas.

Donc, je pense qu'il faut garder dans l'algorithme toutes les cases qui ont un coût minimum pour effectuer la recherche, et donc éliminer moins de cases, ce qui va évidemment se ressentir dans les performances ... :'(