autopawn / haboard

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

Issue#2 Hare&Hounds #17

Open Yi-Zhou-Zhou opened 4 years ago

Yi-Zhou-Zhou commented 4 years ago

Nombre: Yi cong Zhou Zhou - Rol: 201873024-6

GameHaskell

Aclaraciones:

1.- isInList :: (Eq a) => (a,a) -> [(a,a)] -> Bool

Función que toma como parámetro una tupla con las coordenadas finales (xf,yf) de la pieza y una lista de pares (x,y). Se utiliza para restringir los movimientos posibles, ya que las coordenadas ([0,0), (0,4), (8,0), (8,4)] son las únicas coordenadas a las que se puede llegar a través de un movimiento y a la vez no son válidas (ya que son espacios vacíos), por lo que comprobamos si (xf,yf) pertenece a esa lista, si pertenece retorna False, de lo contrario retorna True.

isInListHaskell

2.- diagonalRestriction :: (Integral a,Eq a) => (a,a) -> (a,a) -> Bool

Función que toma como parámetros dos tuplas, una con la posición inicial y otra con la posición final. Siguiendo las restricciones de movimiento del juego, nos aseguramos que al menos una de las posiciones dadas no esté en la lista de coordenadas: [(2,2),(4,0),(6,2),(4,4)]. Esto debido a que no es posible moverse desde una posición que pertenece a la lista hacia otra posición que también pertenece a la lista

diagonalRestriciton

3.- chooseTeam :: String -> String -> [Player HareAndHounds]

Función que toma como parámetros dos Strings (Equipo escogido y nombre del jugador) y retorna una lista de Players, dependiendo del equipo escogido. Se utilizó Pattern Matching para retornar la lista indicada para cada caso, si el jugador escoge "Hounds", entonces retorna [human name, cpuEval "CPU" hareAndHoundsEval], si escoge "Hare", retorna [cpuEval "CPU" hareAndHoundsEval, human name], de lo contrario mostrará un error por consola, indicando que no se ha seleccionado una opción válida.

4.- leftSide :: Int -> [Piece] -> Bool

Función que toma como parámetro la coordenada x de Hare y una lista con todas las piezas, mediante recursión se comprueba si Hare está a una posición <= de todos los Hounds (evaluando solamente con la coordenada x), de ser así, retorna True y Hare ganaría, ya que los Hounds no pueden retroceder.

image