Maneira eficiente de representar a lógica hexagonal do tabuleiro para jogos do tipo abalone


11

Eu tenho que implementar o jogo AI for Abalone e estou me perguntando qual é a melhor maneira de representar a lógica do tabuleiro usando Java sem desperdiçar muitos recursos em todas as rotinas de verificação e atualização envolvidas.

É melhor usar várias listas? Uma matriz de objetos Cell? Alguma sugestão?

insira a descrição da imagem aqui


1
Há um ótimo recurso para grades hexagonais em redblobgames.com Ele tem tudo o que você precisa saber sobre grades hexagonais, seus sistemas de coordenadas e como fazer cálculos nelas.
Roman Reiner

Respostas:


7

1) como a placa possui um tamanho fixo que você fornecerá de qualquer maneira para uma IA, você pode representá-la como uma matriz unidimensional com o número certo de células, em que cada célula representa um espaço no borda. Mapear essa matriz unidimensional para a tela para apresentação pode ser um pouco estranho, mas é um problema que você só precisa resolver uma vez.

O mesmo se aplica à validação de movimentos; você pode criar uma matriz de adjacência que informa quais células são adjacentes a outras ou criar uma lógica para determinar a adjacência. De qualquer maneira, seria um custo único.

2) Observe que toda grade hexadecimal também é uma grade de dois eixos, exceto que os eixos são 60 ou 120 graus um do outro, em vez de 90 graus como grades onde X e Y são perpendiculares. (Os antigos jogos de tabuleiro com blocos hexagonais usavam esse truque para rotular os hexágonos 1, 2, 3 em uma direção e AA, BB, CC na outra direção, distorcida.)

Examinei o código-fonte para implementações em computador de jogos de tabuleiro que usam (2), e eles forneceram rotinas como "encontre uma linha entre hexágonos" ou "encontre a distância entre hexágonos". Isso foi há muito tempo, então os detalhes são perdidos no tempo, mas eu lembro que não foi muito difícil.

(Era mais matemática inteira do que coisas pitagóricas.;))


1
Para uma IA para fazer anos atrás, eu tinha uma matriz de células de 19x19 e uma matriz de 192x5 de ponteiros para células que a AI então usava para descobrir seu movimento.
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.