J'ai travaillé sur un jeu de société qui a une grille hexadécimale comme cette carte:
Étant donné que le tableau ne changera jamais et que les espaces sur le tableau seront toujours liés aux mêmes autres espaces autour de lui, devrais-je simplement coder en dur chaque espace avec les valeurs dont j'ai besoin? Ou dois-je utiliser différents algorithmes pour calculer les liens et les traversées?
Pour être plus précis, mon jeu de société est un jeu à 4 joueurs où chaque joueur a une grille hexagonale de 5x5x5x5x5x5 (encore une fois, l'image ci-dessus). Le but est d'aller du bas de la grille vers le haut, avec divers obstacles sur le chemin, et chaque joueur pouvant s'attaquer depuis le bord de sa grille sur d'autres joueurs sur la base d'un multiplicateur de portée.
Étant donné que la grille des joueurs ne changera jamais et que la distance de tout espace arbitraire du bord de la grille sera toujours la même, devrais-je simplement coder en dur ce nombre dans chacun des espaces, ou devrais-je toujours utiliser un premier algorithme de recherche étendu lorsque les joueurs attaquent?
Le seul inconvénient auquel je peux penser pour tout coder en dur est que je vais coder 9+ 2 (5 + 6 + 7 + 8) = 61 cellules individuelles. Y a-t-il autre chose qui me manque que je devrais envisager d'utiliser des algorithmes plus complexes?
int numberOfHexagonsInArea(int rows) { int area = 1; while(rows>0) { area += (rows-1)*6; rows--; } return area; }
{X,Y}
vous pouvez évidemment aller vers {X-1, Y}
et {X+1, Y}
sur la même ligne. Sur les lignes ci-dessous et au-dessus, vous pouvez aller à {X, Y-1}
et {X, Y+1}
. Enfin, en fonction de l'uniformité de Y
, vous pouvez aller à {X-1, Y-1}
et {X-1, Y+1}
ou {X + 1, Y-1} `et{X+1, Y+1}