Ho lavorato su un gioco da tavolo che ha una griglia esadecimale come questa tavola:
Poiché la scheda non cambierà mai e gli spazi sulla scheda saranno sempre collegati agli stessi altri spazi circostanti, dovrei semplicemente codificare ogni spazio con i valori di cui ho bisogno? O dovrei usare vari algoritmi per calcolare collegamenti e attraversamenti?
Per essere più specifici, il mio gioco da tavolo è un gioco a 4 giocatori in cui ogni giocatore ha una griglia esadecimale 5x5x5x5x5x5 (di nuovo, l'immagine sopra). L'obiettivo è quello di andare dal fondo della griglia verso l'alto, con vari ostacoli, e ogni giocatore può attaccarsi a vicenda dal bordo della griglia su altri giocatori in base a un moltiplicatore di distanza.
Dal momento che la griglia dei giocatori non cambierà mai e la distanza di qualsiasi spazio arbitrario dal bordo della griglia sarà sempre la stessa, dovrei semplicemente codificare questo numero in ciascuno degli spazi, o dovrei ancora usare un ampio algoritmo di ricerca quando i giocatori stanno attaccando?
L'unica cosa che mi viene in mente per la codifica di tutto è che sto andando a codice 9+ 2 (5 + 6 + 7 + 8) = 61 singole celle. C'è qualcos'altro che mi manca che dovrei considerare di utilizzare algoritmi più complessi?
int numberOfHexagonsInArea(int rows) { int area = 1; while(rows>0) { area += (rows-1)*6; rows--; } return area; }
{X,Y}
te ovviamente puoi andare {X-1, Y}
e {X+1, Y}
sulla stessa riga. Nelle righe sotto e sopra puoi andare a {X, Y-1}
e {X, Y+1}
. Infine, a seconda del uniforme-ness Y
, si può andare a {X-1, Y-1}
e {X-1, Y+1}
o {X + 1, Y-1} `e{X+1, Y+1}