Eu tenho trabalhado em um jogo de tabuleiro que possui uma grade hexadecimal como esta:
Como o quadro nunca mudará e os espaços no quadro sempre serão vinculados aos mesmos outros espaços ao seu redor, devo apenas codificar cada espaço com os valores de que preciso? Ou devo usar vários algoritmos para calcular links e percursos?
Para ser mais específico, meu jogo de tabuleiro é um jogo de 4 jogadores em que cada jogador tem uma grade hexagonal de 5x5x5x5x5x5 (novamente, a imagem acima). O objetivo é ir do fundo da grade para o topo, com vários obstáculos no caminho, e cada jogador sendo capaz de atacar um ao outro da borda do seu grid a outros jogadores com base em um multiplicador de alcance.
Como a grade de jogadores nunca muda e a distância de qualquer espaço arbitrário a partir da borda da grade sempre será a mesma, devo apenas codificar esse número em cada um dos espaços ou ainda usar um algoritmo de primeira pesquisa quando jogadores estão atacando?
O único truque em que posso pensar para codificar tudo é que vou codificar 9 + 2 (5 + 6 + 7 + 8) = 61 células individuais. Falta alguma coisa que eu deva considerar o uso de algoritmos mais complexos?
int numberOfHexagonsInArea(int rows) { int area = 1; while(rows>0) { area += (rows-1)*6; rows--; } return area; }
{X,Y}
que você pode, obviamente, ir para {X-1, Y}
e {X+1, Y}
na mesma linha. Nas linhas abaixo e acima, você pode ir para {X, Y-1}
e {X, Y+1}
. Finalmente, dependendo da uniformidade de Y
, você pode ir para {X-1, Y-1}
e {X-1, Y+1}
ou (X + 1, Y-1} `e{X+1, Y+1}