Al igual que para el proyecto 2 en Java, se pidió implementar Peg Solitaire, siguiendo una estructura similar a Fox and Hounds.
Implementación del juego
Nuevamente, el juego se implementó con la versión inglesa del tablero:
Condiciones de victoria
Se crea una instancia de Game llamada PegSolitaire, la cual posee las condiciones de victoria del juego: si queda solo una pieza en el tablero, gana el jugador 0 (jugador por defecto y el que siempre va a jugar, pues es un juego de un jugador); si el jugador se queda sin movimientos, gana el jugador 1 (nunca juega pero sirve para hacer que pierda el jugador 0); si no se cumpla ninguna condición, se sigue jugando.
Límites del tablero
Para verificar que una pieza estuviera dentro del tablero (pues este no es cuadrado), se creo la función validPosition, la cual retorna True si la pieza está dentro, y, por el contrario, retorna False.
Movimiento de las piezas
Se creó la función movePeg, sin modificar movePiece en el archivo Piece.hs pues esta tiene una estructura más general y no se quería arruinar para los demás juegos. Esta función permite que, realizado un movimiento, la pieza que ha sido comida se elimina de la lista de piezas. Además, en la función pieceMoves, se explican las condiciones de movimiento que deben existir para que una pieza se mueva.
Inicialización del juego
El juego se inicializa creando listas que determinan los sectores del tablero, para concatenarlas entre todas y permitir inicializar el juego con todas las piezas en la lista, y con el jugador 0.
Makefile
El Makefile NO lo modifiqué, puesto que compilaba los archivos .hs con Stack y al agregar stack ghc al Makefile, me generaba errores. De todas formas, si se desea se puede agregar al Makefile lo siguiente y debiera compilar sin problemas:
pegsolitaire:
mkdir -p bin
ghc $(COMMON_SOURCES) PegSolitaire.hs -o bin/pegsolitaire
Para compilar, ingresaba por consola stack script PegSolitaire.hs --resolver lts-14.18 y compilaba y ejecutaba sin problemas.
Issue #1
Vicente De la Rosa Sánchez 201873002-5
Descripción del problema
Al igual que para el proyecto 2 en Java, se pidió implementar Peg Solitaire, siguiendo una estructura similar a Fox and Hounds.
Implementación del juego
Nuevamente, el juego se implementó con la versión inglesa del tablero:
Condiciones de victoria
Se crea una instancia de Game llamada PegSolitaire, la cual posee las condiciones de victoria del juego: si queda solo una pieza en el tablero, gana el jugador 0 (jugador por defecto y el que siempre va a jugar, pues es un juego de un jugador); si el jugador se queda sin movimientos, gana el jugador 1 (nunca juega pero sirve para hacer que pierda el jugador 0); si no se cumpla ninguna condición, se sigue jugando.
Límites del tablero
Para verificar que una pieza estuviera dentro del tablero (pues este no es cuadrado), se creo la función validPosition, la cual retorna True si la pieza está dentro, y, por el contrario, retorna False.
Movimiento de las piezas
Se creó la función movePeg, sin modificar movePiece en el archivo Piece.hs pues esta tiene una estructura más general y no se quería arruinar para los demás juegos. Esta función permite que, realizado un movimiento, la pieza que ha sido comida se elimina de la lista de piezas. Además, en la función pieceMoves, se explican las condiciones de movimiento que deben existir para que una pieza se mueva.
Inicialización del juego
El juego se inicializa creando listas que determinan los sectores del tablero, para concatenarlas entre todas y permitir inicializar el juego con todas las piezas en la lista, y con el jugador 0.
Makefile
El Makefile NO lo modifiqué, puesto que compilaba los archivos .hs con Stack y al agregar stack ghc al Makefile, me generaba errores. De todas formas, si se desea se puede agregar al Makefile lo siguiente y debiera compilar sin problemas:
Para compilar, ingresaba por consola stack script PegSolitaire.hs --resolver lts-14.18 y compilaba y ejecutaba sin problemas.