INTELIGECIA EN REDES DE COMUNICACIONES 5º ING TELECOMUNICACIÓN TRABAJO FINAL DE LA ASIGNATURA EL SOLITARIO AUTORES

Documentos relacionados
INTELIGECIA EN REDES DE COMUNICACIONES 5º ING TELECOMUNICACIÓN TRABAJO FINAL DE LA ASIGNATURA EL DOMINÓ AUTORES

Programación Concurrente y Distribuida Ingeniería Informática Facultad de Ciencias Universidad de Cantabria.

Examen de Programación II (Ingeniería Informática)

Diagramas de interacción

INTELIGENCIA ARTIFICIAL Puzzle 3 x 3 Hill Climbing

EJEMPLO DE PARTIDA. Pongo en la casilla: 4 El tablero queda como: X

Proyecto: El Problema de las 8 Torres

Programación orientada a objetos. Introducción

Figura 1. Cálculo del factorial de un número determinado

Árbol Binario. Manual de usuario

Práctica 1 Arreglos n-dimensionales y operaciones con bits PRÁCTICA I

*Juego "El Solitario"

Recursividad. Figura 1. Cálculo del factorial de un número determinado.

Examen de Estructuras de Datos y Algoritmos (Ingeniería Informática)

Especificaciones del juego Multi-Wheel European Roulette Gold

FACULTAD DE INGENIERÍA

Algoritmos y Estructuras de Datos Tema 2: Diseño de Algoritmos

PARTE TEÓRICA - TEST [2,5 PUNTOS]:

Tema 13 Modelos de Representación de Diagramas

NIVEL 17: ESTRUCTURAS NO LINEALES

Examen de Fundamentos de Computadores y Lenguajes

SEGUNDA PRÁCTICA. Programación Curso Ingeniería en Informática Universidad Carlos III de Madrid

Sólo una opción es correcta en cada pregunta. Cada respuesta correcta suma 1 4. puntos. Cada respuesta incorrecta resta 1 12

Algoritmos y Estructuras de Datos Tema 2: Diseño de Algoritmos

RESOLUCIÓN DE SUDOKUS

Clases a Implementar (Paquete xklotski): 1. Clase XKlotskiException: package xklotski;

Relación de prácticas de la asignatura METODOLOGÍA DE LA PROGRAMACIÓN Segundo Cuatrimestre Curso º Grado en Informática

Funciones básicas de trabajo

ESTRUCTURA DE DATOS Y ALGORITMOS Titulación: Ingeniero Técnico en Informática de Gestión Curso: 2º Nombre y apellidos: Nota:

INTERFACE LIST DEL API JAVA. CLASES ARRAYLIST, LINKEDLIST, STACK, VECTOR. EJEMPLO CON ARRAYLIST. (CU00920C)

Arreglos y Clusters MATRICES: CLUSTERS: Creación de matrices y clusters con controles e indicadores.

TRABAJO DE TITULACIÓN PREVIO A LA OBTENCIÓN DEL TÍTULO DE INGENIERO EN MECATRÓNICA

Solución al Examen de Fundamentos de Computadores y Lenguajes

Creación de materiales didácticos Aplicaciones para dispositivos móviles Lección 3

Robótica Inteligente Laboratorio Virtual Experimento 6

Examen No. 3 Valor: 50 Puntos (25% de la Nota Final) Tiempo Máximo 2 Horas Fecha: 9 de Diciembre del 2016

Resumen Clase Anterior Arreglos Unidimensionales Ejemplos Ejercicio Arreglos Multidimensionales. ING1310 Introducción a la Computación.

Metodología de la programación. Progr. de Computadores Metod.de la Programación 1

Multiplicación de matrices simétricas

Soluciones del Examen de Fundamentos de Computadores y Lenguajes

HP LaserJet serie M1522 MFP Tareas de impresión

Estructuras dinámicas lineales (i)

Programación Estructurada

PROBLEMAS CINEMÁTICA

I. Introducción a la programación orientada a objetos y al lenguaje JAVA Colegio Reuven Feuerstein --Javier Navarro

ACCESS. FORMULARIOS (2ª parte): PANEL INICIAL

Examen escrito de Programación 1

Adentrándonos a la Programación


Tema 4: Viendo en 3D

Las cámaras presentan una escena desde un determinado punto de vista. Los objetos de cámara simulan una imagen fija, de película o de vídeo real.

Concurrencia Monitores. Guillermo Román Díez

MOVIMIENTO RECTILINEO

ZCBC. ECBTI. Programa Ingeniería de Sistemas. Curso Académico de Programación Orientada a Objetos. Código José Acevedo y Gómez

Programación. Ejercicios Tema 6 Tipos de Datos Estructurados: Vectores y Matrices

FACULTAD DE INGENIERÍA

Programación dinámica

Proyecto I (15%) Simulación del Juego Solitario

A continuación se describirán el problema, el análisis del algoritmo, sus propiedades y los

UNIDAD CENTRAL DEL VALLE DEL CAUCA. Implementación de la aplicación SIGA Instructivo de Perfil de docente. Versión 1.1

Titulación: Ingeniero Técnico en Informática de Gestión Curso: 2º. Leonardo DaVinci. Piccasso La Tempestad. Mona Lisa

COMPRESIÓN DE MENSAJES

Estructuras de datos utilizando JAVA

Game Document Concept VIDEOJUEGOS

Algoritmo. Programa. Lenguaje algorítmico

(e) Con la poda alfa-beta se eliminan nodos que nunca serán alcanzados

LA COMPETENCIA MIRAR CON SENTIDO DE ESTUDIANTES PARA MAESTRO (EPM) ANALIZANDO EL PROCESO DE GENERALIZACIÓN EN ALUMNOS DE EDUCACIÓN PRIMARIA

Informes. capítulo 24

Problema 1 (2 puntos)

Manual de Usuario Control Escolar Sistema de Comparabilidad CUMex

Fig. 5.1 Interfaz Principal del Tutor de MatLab

Propiedades. Ejercicios Tema 14. Representación de Grafo. Grado de Grafo (Matriz de Adyacencia)

Concurrencia. Primitivas IPC con bloqueo

Tema 9. Algoritmos sobre listas. Programación Programación - Tema 9: Algoritmos sobre listas

Tema: Introducción al IDE de Microsoft Visual C#.

Cinta de fichas de opciones. Barra de desplazamiento

Debe definir un menú para poder añadir elementos a ella. Entrar al panel de WordPress.

(d) Puede haber estrategias que funcionan mejor que Minimax si el contrincante es

ANÁLISIS LÉXICO Ing. Ronald Rentería Ayquipa

Manual de utilización del Dreamweaver MX 2004

Algorítmica y Lenguajes de Programación. Algoritmos voraces y divide y vencerás

POTENCIACIÓN Y RADICACIÓN

Ejercicio de Programación Orientada a Objetos Curso 2016/2017 Exámenes

Uno de los conceptos más útiles en ciencias de la computación es la pila.

FACULTAD DE INGENIERÍA

Estructuras Administrativas. Sesión 7: Diagramas de Flujo

Informática. ETSIGCT curso 2017/2018 Presentación y boletín 1 de prácticas J. Javier Ibáñez González

Algoritmos y Estructuras de Datos Iteradores. Guillermo Román Díez

Curso: Lenguaje de Programación Java Parte 7: Seguridad. Autor: Jhimy Daniel Cussi Cruz

Diseño estructurado de algoritmos. Sesión 7: Técnicas para la formulación de algoritmos

Práctica 7. Entorno de programación Visual C#. Sistemas en Tiempo Real

Papel de tamaño personalizado

PRACTICA Nº 1: MANDO DIRECTO DE UN CILINDRO DE SIMPLE EFECTO

Una clave Definición informal La clave debe contener una secuencia de una o más letras seguidas por uno o más dígitos

Informe Final SuperGrupo Proyecto Lenguajes de Programación Minimun Job Shop Scheduling Problem

FUNDAMENTOS DE INFORMÁTICA

Cómo crear tabulaciones con la regla de Word para ahorrar tiempo

Transcripción:

INTELIGECIA EN REDES DE COMUNICACIONES 5º ING TELECOMUNICACIÓN 2006-2007 TRABAJO FINAL DE LA ASIGNATURA EL SOLITARIO AUTORES DANIEL F. TAVEIRA MONTEIRO RODRIGO GÓMEZ RODRIGUEZ DAVID TOLEDO NAVARRO

1. Índice 2. Introducción 3 3. Modelado del juego.. 3 4. Realización del modelo. 6 5. Referencias 9 2

2. Introducción Nuestra práctica complementaria consiste en la realización de un juego, el solitario. El solitario es un juego determinista (no interviene el azar), en el que para su resolución se ha utilizado un algoritmo de búsqueda con retroceso (bracktracking). Para el desarrollo del mismo se ha utilizado el lenguaje de programación java. 3. Modelado del juego La estructura de dicho juego se compone de cinco cuadrados colocados en cruz, de los cuales, los cuadrados del exterior cuentan con 9 bolas cada uno, es decir, existe un total de 36 bolas, quedando en el cuadrado interior un hueco. Figura 1. Estructura del juego del solitario. El procedimiento consiste en ir pasando las bolas, en horizontal o vertical, por encima de otra hasta un hueco libre, la bola por la que se pasa encima es eliminada del tablero. Así de forma repetida hasta intentar conseguir el objetivo del juego que es dejar una única bola en el centro del cuadrado interior. En las figuras siguientes se muestra una serie de posibles secuencias del juego: 3

Figura 2. Situación inicial del juego. Figura 3. Primer movimiento. 4

Figura 4. Segundo movimiento. Figura 5. Posible situación final. 5

4. Realización del modelo La implementación del juego se ha realizado mediante el lenguaje de programación java. El modelado del tablero se ha hecho mediante un array de dos dimensiones cuadrado como se muestra a continuación: int [][]tabla = {{8,8,1,1,1,8,8}, {8,8,1,1,1,8,8}, {1,1,1,1,1,1,1}, {1,1,1,0,1,1,1}, {1,1,1,1,1,1,1}, {8,8,1,1,1,8,8}, {8,8,1,1,1,8,8}}; Los números utilizados tienen la siguiente representación: - El número 8 representa un espacio vacío. - El número 1 representa una bola. - El número 0 representa un hueco. Para su resolución se ha utilizado un algoritmo de búsqueda con retroceso (bracktracking). Se recorren todos los posibles movimientos realizando llamadas recursivas. Los pasos seguidos en el método (public void resolver()) que implementa el bracktracking son los siguientes: 1- Se recorre la matriz con las fichas. 2- Se busca una posición que valga 1, ya que esto quiere decir que en esa posición hay una ficha. 3- Se comprueba en todos los sentidos, horizontal-derecha, horizontalizquierda, vertical-arriba, vertical-abajo, si podemos hacer un movimiento. Es decir, si en la siguiente posición hay una ficha y en la siguiente de la siguiente no hay ficha. 4- Si se puede realizar el movimiento, se realiza. 5- Se actualiza la matriz de fichas. 6- Se actualiza el área de texto. 7- Se actualiza la matriz con la solución encontrada. 8- Se llama de forma recursiva a este método buscando alguna solución. 9- De vuelta de la llamada recursiva hay que dejar la matriz tal y como estaba antes de la llamada, es decir, como si no se hubiera realizado ningún movimiento. 10- Se borra el movimiento del área de texto. 11- Se realiza lo mismo al paso anterior, pero en todos los sentidos. 6

Para la visualización del juego se ha implementado una interfaz gráfica, también desarrollada en el lenguaje de programación java. La figura siguiente muestra la interfaz gráfica: Figura 6. Interfaz gráfica del juego. En la interfaz se encuentran los siguientes elementos: - Panel de visualización del juego. - Panel de visualización de los movimientos realizados. - Botón SOLUCIONAR. Al hacer clic sobre el comienza a ejecutarse el juego. - Botón <<<<. Disminuye la velocidad en la que se realizan los movimientos. - Botón >>>>. Aumenta la velocidad en la que se realizan los movimientos. 7

- Etiqueta donde nos muestra el número de soluciones que se han encontrado. El control de la velocidad en la que se realizan los movimientos se ha llevado a cabo mediante una espera a la hora de mostrar el tablero. Una vez que ha finalizado la búsqueda de una solución se muestra en la ventana un botón con el fin de recorrer los pasos anteriormente realizados. Además se pueden realizar otras posibles búsquedas. Figura 7. Botones para recorrer los pasos anteriores una vez se ha encontrado la solución y encontrar otra posible solución. 8

5. Referencias - Apuntes de la asignatura de Inteligencia en Redes de Comunicaciones. 9