Juego de Damas en Prolog Para días de junio, unos amigos de la UPN me mandaron a hacer un proyecto de su cursoLenguajes de programación ... Fue así como asumí el reto de realizar un proyecto de curso en 2 días. El proyecto consistía en realizar un juego de Damas Damas en prolog, particularmente swi-prolog . Así que, sin más preludios, voy directo al grano: Y como el post va a ser realmente extenso, voy a dedicarle varias entradas Tuve que clasificar los predicados según su t area... y así reduje a 4 clases:
1. Hechos: fichaEsImg(numeroEnMatriz, fichaEsImg (numeroEnMatriz, idImagenEnMemoria).
2. Operaciones de Listas y Matrices:
extraerElementoLista(Lista, extraerElementoLista (Lista, Posicion, Elemento).
extraerElementoMatriz (Lista, CoordX, CoordY, Elemento).
mostrarLista(Lista). mostrarLista (Lista).
mostrarMatriz (Matriz). (Matriz).
cambiarElementoLista (Lista, Posicion, Elemento, NuevaLista).
cambiarElementoMatriz (Matriz, CoordX, CoordY, Elemento, NuevaMatriz).
esPar (Ficha). (Ficha).
3. Operaciones del Tablero:
contarFichas(Matriz,Jugador,CantFichas). contarFichas (Matriz,Jugador,CantFichas).
mostrarTablero (MatrizTablero).
iniciarJuego /0.
iniciarTablero(Tablero). iniciarTablero (Tablero).
jugar (Tablero,Jugador,NuevoTablero). (Tablero,Jugador,NuevoTablero).
switchJugador switchJug ador (Jugador, (Jugador, NuevoJugador).
actualizarTablero(Tablero, actualizarTablero (Tablero, X_origen, Y_origen, X_destino, Y_destino, NuevoTablero).
leerJugadaOrigen(Tablero,Jugador,X,Y). leerJugadaOrigen(Tablero,Jugador,X,Y).
validarPosicionOrigen(Tablero,Jugador, validarPosicionOrigen (Tablero,Jugador, X_test, Y_test, X_real, Y_real).
leerJugadaDestino(Tablero,Jugador,XO,YO,XD,YD,NuevoTablero). leerJugadaDestino(Tablero,Jugador,XO,YO,XD,YD,NuevoTablero).
validarPosicionDestino (Tablero,Jugador,XO,YO,XD,YD,XR,YR, NuevoTablero).
hayPieza(Jugador,Tablero,XO,YO,XD,YD,XP,YP). hayPieza (Jugador,Tablero,XO,YO,XD,YD,XP,YP).
4. GUI:
/0. gui
liberarMemoria /0.
dibujar_ficha(Ficha, dibujar_ficha (Ficha, Pos_X, Pos_Y).
actualizar_elemento(Tablero,X). actualizar_elemento (Tablero,X).