Actualmente estoy implementando algo bastante similar a las damas. Entonces, tengo este juego de mesa y hay piezas blancas y negras. Donde no hay piezas blancas o negras, no tienes piezas.¿Cuál es la mejor estructura de datos para representar un tablero de damas cuando la velocidad es la principal preocupación?
Actualmente estoy haciendo el método GetValidMoves()
que devolverá todos los movimientos actuales que uno puede hacer con la placa actual.
Por lo tanto, me pregunto cuál podría ser la mejor manera de representar a la junta. El enfoque ingenuo sería tener una matriz con 0's 1's y 2's (para ninguna pieza, pieza blanca y pieza negra).
Otra idea sería, en lugar de una representación matricial de la placa, tener 2 listas (o cualquier otra estructura de datos): una para piezas negras, otra para blanco.
Estoy implementando este juego para probar algunos algoritmos de IA, por lo que mi principal preocupación es la velocidad. Básicamente pondré a 2 jugadores de IA jugando entre sí, por cada turno cada jugador debería tener una lista de todos sus movimientos válidos y luego elegirá qué movimiento hacer, esto siempre sucederá hasta que el juego termine (algún jugador gana o hay un jugador). Corbata).
PS: No estoy preguntando por el algoritmo de AI, sólo quiero saber cuál sería la mejor estructura de datos para manejar el tablero, por lo que hace que sea fácil de
- Busque todas las movimientos válidos para el jugador actual
- Hacer un movimiento
- Verificar que el juego no haya terminado (se termina cuando un jugador perdió todas sus piezas o un jugador llegó al otro lado del tablero).
Eso básicamente será lo mismo que una matriz de ints (es decir, una matriz 2D). Y eso será incluso más lento que una matriz. –
no seas tonto. Administrar una matriz de ints toma al menos 64 operaciones cada vez. El uso de un mapa de bits en un int de 64 bits puede hacer comparaciones, etc. en una sola operación. –
tengo curiosidad por ver qué operaciones se necesitarían para descubrir los movimientos posibles dada su representación de mapa de bits. – jlewis42