Un moyen efficace de représenter la logique du tableau hexagonal pour les jeux de type ormeau

11

Je dois implémenter le jeu AI for Abalone et je me demande quelle est la meilleure façon de représenter la logique de la carte en utilisant Java sans gaspiller trop de ressources dans toutes les routines de vérification et de mise à jour impliquées.

Est-il préférable d'utiliser diverses listes? Une matrice d'objets Cell? Toute suggestion?

entrez la description de l'image ici

Asgard
la source
1
Il y a une grande ressource pour les grilles hexagonales sur redblobgames.com Il a tout ce que vous devez savoir sur les grilles hexagonales, leurs systèmes de coordonnées et comment faire des calculs sur elles.
Roman Reiner

Réponses:

7

1) puisque la carte a une taille fixe que vous allez de toute façon alimenter dans une IA, vous pouvez simplement la représenter comme un tableau unidimensionnel avec le bon nombre de cellules, où chaque cellule représente un espace sur le planche. Mapper ce tableau unidimensionnel à l'écran pour la présentation peut être un peu étrange, mais c'est un problème que vous n'avez à résoudre qu'une seule fois.

La même chose s'appliquerait à la validation des mouvements; vous pouvez soit créer une matrice d'adjacence qui indique quelles cellules sont adjacentes à d'autres, soit proposer une logique pour déterminer l'adjacence. Quoi qu'il en soit, ce serait un coût unique.

2) Notez que chaque grille hexadécimale est également une grille à deux axes, sauf que les axes sont à 60 ou 120 degrés l'un de l'autre, au lieu de 90 degrés comme les grilles où X et Y sont perpendiculaires. (Les anciens jeux de société à tuiles hexagonales utilisaient cette astuce pour étiqueter les hexs 1, 2, 3 dans une direction et AA, BB, CC dans l'autre direction, asymétrique.)

J'ai regardé le code source pour les implémentations informatiques des jeux de société qui utilisent (2), et ils ont fourni des routines comme «trouver une ligne entre les hexs» ou «trouver la distance entre les hexs». C'était il y a longtemps, donc les détails sont perdus avec le temps, mais je me souviens que ce n'était pas trop difficile.

(C'était plus des mathématiques entières que des trucs pythagoriciens.;))

Rob
la source
1
Pour une IA pour go il y a des années, j'avais un tableau de cellules 19x19, et un tableau 192x5 de pointeurs vers des cellules que l'IA a ensuite utilisé pour comprendre son mouvement.