“EL SOLITARIO”

Anuncio
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
IRC – Juego del Solitario
1. Índice
2. Introducción
………………………………
3
3. Modelado del juego ………………………..
3
4. Realización del modelo
………………….
6
………………………………
9
5. Referencias
2
IRC – Juego del Solitario
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
IRC – Juego del Solitario
Figura 2. Situación inicial del juego.
Figura 3. Primer movimiento.
4
IRC – Juego del Solitario
Figura 4. Segundo movimiento.
Figura 5. Posible situación final.
5
IRC – Juego del Solitario
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
IRC – Juego del Solitario
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
IRC – Juego del Solitario
-
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
IRC – Juego del Solitario
5. Referencias
-
Apuntes de la asignatura de Inteligencia en Redes de Comunicaciones.
9
Descargar