180 likes | 363 Views
Ajedrez. Grupo: Miguel Corchero Lázaro Juan José Domínguez Berrueta Pablo Fernández Mantecón Javier Hertfelder Piñeiro Eduardo Moreno Martínez de Lecea Álvaro Torroba Lombera. Índice. 1.- Demostración de la aplicación 1.1.- Representación FIDE 1.2.- Situaciones concretas posibles
E N D
Ajedrez Grupo: Miguel Corchero Lázaro Juan José Domínguez Berrueta Pablo Fernández Mantecón Javier Hertfelder Piñeiro Eduardo Moreno Martínez de Lecea Álvaro Torroba Lombera
Índice 1.- Demostración de la aplicación 1.1.- Representación FIDE 1.2.- Situaciones concretas posibles 2.- Aspectos tecnológicos 2.1.- Pruebas 2.2.- Patrones utilizados 3.- Posibles futuras entregas
Representación FIDE • A continuación se muestran algunos de los posibles movimientos en representación FIDE: • e4 (peón a e4) • Dxf3 (dama come a f3) • 0-0 (enroque corto) • C3e2 (caballo de fila 3, a e2) • Etc…
Demostración de la aplicación • Situación de enroque: Esta situación se corresponde con el movimiento del rey “intercambiándose” con una de las dos torres.
Demostración de la aplicación • Situación de comer con 2 peones:
Demostración de la aplicación • Situación de comer con 2 caballos
Demostración aplicación • Situación de coronación
Demostración aplicación • Situación de rey en jaque
Guardar una partida • Posibilidad de guardar una partida con las siguientes oportunidades: • Continuar la partida posteriormente. • Practicar una situación concreta. • Asegurar el estado de la partida.
Cargar una partida • Posibilidad, obvia tras el apartado anterior, de recargar una partida guardada. Para ello solo deberemos introducir la palabra “guardar”, y a continuación se nos pedirá la ruta de almacenamiento.
Rendirse • Si uno de los jugadores desea rendirse. Podrá hacerlo introduciendo la palabra “rendirse” durante la partida.
Ofrecimiento de tablas • Si uno de los jugadores quisiese ofrecer tablas al rival, podría hacerlo introduciendo “tablas” por teclado. • De esta forma, el otro jugador recibiría la petición de tablas, pudiendo aceptarlas (terminando la partida), ó rechazarlas (continuando la misma).
Jugar contra la maquina • Gracias a la Inteligencia Artificial, y mediante el uso de heurísticas consultadas a expertos en ajedrez, se tiene la posibilidad de jugar contra la máquina.
Aspectos tecnológicos • Para realizar esta práctica nos hemos apoyado en dos lenguajes: • Java • Prolog para la inteligencia artificial • Se han realizado muchas pruebas funcionales para comprobar el correcto funcionamiento del ajedrez. • Gracias a los patrones impartidos en la asignatura, hemos resuelto problemas que hubiésemos tardado mucho tiempo en resolver.
Pruebas • Se han realizado todo tipo de pruebas funcionales y unitarias para comprobar el correcto funcionamiento del ajedrez. • El framework utilizado para las pruebas ha sido JUnit.
Patrones utilizados • Factory method (Tablero Factory) • Observer (Vistas) • Façade (Login) • Proxy (Fide) • Singleton (Log)
Posibles futuras entregas • Integrar la rama de identificación y registro de usuario junto con la rama del juego de ajedrez. • Implementar el ajedrez en una aplicación distribuida. • Vistas de una partida. • En un futuro muy lejano, poder elegir la opción de realizar un movimiento gore.
Posibles futuras entregas • Total integración con inteligencia artificial, dotando al sistema de gran capacidad de razonamiento. • Aprendizaje automático por parte del sistema, de forma que vaya aprendiendo a medida que juega las partidas. • Posibilidad, gracias a la IA, de dotar al sistema de varios niveles.