autopawn / haboard

Haskell framework for board games (exercise)
1 stars 30 forks source link

Hare And Hounds #21

Open PedroYanezE opened 3 years ago

PedroYanezE commented 3 years ago

haboard

Haskell framework for board games (exercise)

Por Pedro Yáñez, 201873049-1

Se desarrolló el juego Hare and Hounds, para esto me basé en el código entregado para el juego Fox and Hounds.

Instrucciones de Compilación

Acceder al directorio haboard desde la consola y escribir:

make harehounds

luego ingresar el siguiente comando:

./bin/harehounds

Definir el Tamaño del Tablero

El tablero tiene, en teoría, un tamaño de 9 x 5, sin embargo en la práctica el tamaño del tablero no tiene muchos de los espacios que usaría un espacio 9 x 5, esto se explica más adelante.

Definir la Instancia Hare and Hounds

Me basé en la instancia Fox and Hounds:

Definir los Movimientos Posibles para Cada Pieza

Para definir correctamente los movimientos de cada pieza en un momento determinado, se definieron una serie de posiciones en el tablero (las posiciones cambian dependiendo si la pieza es Hound o Hare). Esto se hizo así para minimizar la cantidad de guards, en vez de hacer un caso para cada pieza, se agruparon las posiciones que comparten movimientos en una sola (por ejemplo, si la pieza está en x = 2 y = 0 o en x = 2 y = 0, tendrá los mismos movimientos pero se filtrarán los movimientos no legales mas adelante, o sea los que están fuera del tablero)

El filtrado de los movimientos válidos es simple, todos los movimientos que no estén en y = 2 y en x ∈ {0,2,4,6,8} o en y ∈ {0,4} y en x ∈ {2,4,6} (o séa, los espacios válidos en el tablero) son excluídos de la lista de movimientos final.

Estado Inicial del Juego

Hay 4 piezas:

Se hizo que el jugador 1 (Hounds) sea el primero en mover para adherirse a las reglas del juego original.

Transformación del Estado a String

Para lograr esto se apromeximó el problema de una manera similar a lo que se hizo para la lista de movimientos, se agruparon ciertas posiciones en el tablero que contienen los mismos símbolos, de la siguiente forma:

4

Main

Para correr el juego se imprimen mensajes que explican un poco el funcionamiento del juego y también le da nombre al jugador humano.

Supuestos