Ma jolie video

En gros, l'appel de méthode utilisé ici est

var bmp:BitmapData = new BitmapData(400, 400);

// Génération d'un bitmap aléatoire: fillRect aléatoires, etc...

var finder:BitmapAStar = new BitmapAStar;
var path: /*Point*/ Array = finder.findPath(bmp, new Point(5, 5), new Point(395, 395));

L'A* n'a évidemment pas été le plus compliqué à mettre en oeuvre, mais c'est bien l'analyse et le découpage de ce bitmap qui ont été difficiles à mettre en place. Beaucoup de choses restent à faire malgré cette démo fonctionnelle, notamment l'optimisation du placement des "portes" (ronds blancs sur l'affichage "debug"), et des trajectoires (je pense notamment faire un lissage du chemin à parcourir). D'autres fonctionnalités peuvent être envisagées, comme la gestion des altitudes (terrain en pente, ou les falaises qui seraient des portes à sens unique - qu'on peut sauter mais pas grimper) ou des types de terrain (un malus associé à chaque couleur par exemple).

Dans le plus ardu, on peut aussi imaginer un découpage des formes non rectangulaires (polygones ou courbes).

Une fois cleanées (l'API notamment) et optimisées, je mettrai les sources à disposition sur ce blog... ;)