Manera eficiente de representar la lógica de tablero hexagonal para juegos tipo abulón

11

Tengo que implementar la IA para el juego Abalone y me pregunto cuál es la mejor manera de representar la lógica del tablero usando Java sin desperdiciar demasiados recursos en todas las rutinas de verificación y actualizaciones involucradas.

¿Es mejor usar varias listas? ¿Una matriz de objetos celulares? ¿Cualquier sugerencia?

ingrese la descripción de la imagen aquí

Asgard
fuente
1
Hay un gran recurso para las cuadrículas hexagonales en redblobgames.com. Tiene todo lo que necesita saber sobre las cuadrículas hexagonales, sus sistemas de coordenadas y cómo hacer cálculos en ellas.
Roman Reiner

Respuestas:

7

1) dado que el tablero tiene un tamaño fijo que de todos modos va a alimentar a una IA, podría representarlo como una matriz unidimensional con el número correcto de celdas, donde cada celda representa un espacio en el tablero. Asignar esa matriz unidimensional a la pantalla para la presentación puede ser un poco extraño, pero es un problema que solo tiene que resolver una vez.

Lo mismo se aplicaría a los movimientos de validación; puede crear una matriz de adyacencia que indique qué celdas están adyacentes a otras, o crear una lógica para determinar la adyacencia. De cualquier manera, sería un costo único.

2) Observe que cada cuadrícula hexadecimal también es una cuadrícula de dos ejes, excepto que los ejes están a 60 o 120 grados de distancia entre sí, en lugar de 90 grados como las cuadrículas donde X e Y son perpendiculares. (Los antiguos juegos de tablero de fichas hexagonales utilizaron este truco para etiquetar los hexágonos 1, 2, 3 en una dirección, y AA, BB, CC en la otra dirección, sesgada).

Observé el código fuente de las implementaciones informáticas de juegos de mesa que usan (2), y proporcionaron rutinas como "encontrar una línea entre hexes" o "encontrar la distancia entre hexes". Eso fue hace mucho tiempo, por lo que los detalles se pierden en el tiempo, pero recuerdo que no fue demasiado difícil.

(Eran más matemáticas enteras que las cosas pitagóricas;)

Robar
fuente
1
Para una IA para hacer hace años, tenía una matriz de celdas de 19x19 y una matriz de punteros de 192x5 a las celdas que la IA luego utilizó para descubrir su movimiento.