J'ère en ce moment sur un projet de jeu de plateau à porter en Flash. Or, ce jeu se joue avec des cases hexagonales, ce qui a priori rendait le stockage plutôt complique... :( Eh bien, il n'en est rien! 8) Il suffit en fait de stocker les cases dans un "bête" tableau à deux dimensions. C'est juste l'affichage qui diffère un peu, comme l'explique bien cette page. :)

Bien que je n'en ai pas spécialement besoin dans mon cas, je n'ai pu m'empêcher de me poser la question du pathfinding sur ce type de cartes. Eh bien, en fait c'est plutôt trés simple, étant donné que la question des diagonales ou des coins à contourner ne se pose plus. Par contre, le problême reste de trouver les cases conjointes à une case donnée. En effet, selon sur quelle "ligne" on se trouve, le test est différent.

Voici la fonction que j'ai implémenté a cette fin :function getNearHexPoints(g:Array, x:Number, y:Number):Array {
        var a:Array = new Array();
        for (var i=-1 ; i<=1 ; i++) {
                for (var j=-1 ; j<=1 ; j++) {
                        if ((i || j) && (!(i && j) || (y%2 && i == 1) || (!(y%2) && i == -1)) && g[x+i] && g[y+j]) {
                                a.push({x:x+i, y:y+j});
                        }
                }
        }
        return a;
}

Et voici son resultat (case cliquables) :

La classe PathFinder qui gère aussi les cases hexagonales ne devrait pas tarder... ;)