JPuzzle.Utilities
Class Tablero

java.lang.Object
  extended by JPuzzle.Utilities.Tabla
      extended by JPuzzle.Utilities.Tablero

public class Tablero
extends Tabla

El tablero es el controlador para realizar el juego propiamente, se encarga de todas las operaciones de creación, modificación, y actualización del modelo de datos, haciendo operaciones con todas las celdas en la tabla. Maneja la matriz de imágenes que se utilizan en las celdas. No es multi-threading!


Field Summary
protected  javax.swing.event.ChangeEvent changeEvent
          El evento enviado cuando cambia el modelo de datos.
protected  javax.swing.event.EventListenerList listenerList
          La lista de vistas que reciben eventos.
protected  Matriz matriz
          El objeto generador de imágenes.
 
Fields inherited from class JPuzzle.Utilities.Tabla
alto, ancho, celdas
 
Constructor Summary
Tablero()
          Construye una nuevo tablero con el tamaño por defecto de 4 x 4.
Tablero(int ancho, int alto)
          Construye un nuevo tablero con los parámetros indicados en ancho y alto.
 
Method Summary
 void addChangeListener(javax.swing.event.ChangeListener l)
          Agrega una vista receptora de eventos a la lista.
protected  void crear()
          Crea la tabla de modelo de datos, asignandole un valor consecutivo incremental a cada celda, así como una parte de la imagen a mostrar.
 void desordenar(int nivel)
          Desordena la tabla realizando movimientos aleatorios de cualquiera celda que se encuentre en las cuatro direcciónes cercana a la celda vacía, el objetivo es simular el (des)ordenamiento natural humano.
protected  Posicion encontrarCelda(int valor)
          Intenta encontrar una celda en la tabla, indicada por su valor.
protected  Posicion encontrarVacio()
          Intenta encontrar la celda vacía en la tabla, indicada por el valor nulo.
protected  void fireStateChanged()
          Avisa a todas las vistas que hubo un cambio en la tabla modelo de datos.
 boolean intentarMover(Posicion p)
          Intenta realizar un movimiento dado por la posicion p, validando todos los posibles movimimientos cercanos, y si es válido realiza la operación de intercambiar por el espacio vacío.
protected  void intercambiarCelda(Posicion origen, Posicion destino)
          Intercambia una celda especificada en la posición origen, por otra que se indica por la posición destino en la tabla de modelo de datos.
 void preview()
          Muestra una vista previa del modelo de datos, en la consola de Java.
 void removeChangeListener(javax.swing.event.ChangeListener l)
          Remueve una vista receptora de eventos de la lista.
 void resolver()
          Resuelve el tablero.
 boolean verificarGanador()
          Verifica si todas las celdas están ordenadas naturalmente.
 
Methods inherited from class JPuzzle.Utilities.Tabla
esPosicionValida, getAlto, getAncho, getCelda, getTamano, setAlto, setAncho
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

matriz

protected Matriz matriz
El objeto generador de imágenes.


changeEvent

protected javax.swing.event.ChangeEvent changeEvent
El evento enviado cuando cambia el modelo de datos.


listenerList

protected javax.swing.event.EventListenerList listenerList
La lista de vistas que reciben eventos.

Constructor Detail

Tablero

public Tablero()
Construye una nuevo tablero con el tamaño por defecto de 4 x 4.


Tablero

public Tablero(int ancho,
               int alto)
Construye un nuevo tablero con los parámetros indicados en ancho y alto.

Parameters:
ancho - el valor inicial del ancho de la tabla
alto - el valor inicial del alto de la tabla
Method Detail

intercambiarCelda

protected void intercambiarCelda(Posicion origen,
                                 Posicion destino)
Intercambia una celda especificada en la posición origen, por otra que se indica por la posición destino en la tabla de modelo de datos. Y avisa a la vista que cambiaron los datos.

Parameters:
origen - la posición de la celda que se debe intercambiar
destino - la posición de la celda con la cual debe de intercambiarse

crear

protected void crear()
Crea la tabla de modelo de datos, asignandole un valor consecutivo incremental a cada celda, así como una parte de la imagen a mostrar. La última celda la elimina, poniendole el valor nulo para indicar vacío.


encontrarVacio

protected Posicion encontrarVacio()
Intenta encontrar la celda vacía en la tabla, indicada por el valor nulo.

Returns:
la posición de la celda que está vacía, o nulo si no la encuentra

encontrarCelda

protected Posicion encontrarCelda(int valor)
Intenta encontrar una celda en la tabla, indicada por su valor.

Parameters:
valor - el número ordinal de la celda en la tabla
Returns:
la posición de la celda buscada, o nulo si no la encuentra

intentarMover

public boolean intentarMover(Posicion p)
Intenta realizar un movimiento dado por la posicion p, validando todos los posibles movimimientos cercanos, y si es válido realiza la operación de intercambiar por el espacio vacío.

Parameters:
p - la posición que se desea mover al espacio vacío
Returns:
verdadero si se realizo el movimiento, sino falso

verificarGanador

public boolean verificarGanador()
Verifica si todas las celdas están ordenadas naturalmente. Es decir, verifica si el jugador ha logrado ordenar las celdas.

Returns:
verdadero si estan ordenadas, sino falso

preview

public void preview()
Muestra una vista previa del modelo de datos, en la consola de Java. Tomando en cuenta los saltos de línea para mantener el formato. (Depuración)


desordenar

public void desordenar(int nivel)
Desordena la tabla realizando movimientos aleatorios de cualquiera celda que se encuentre en las cuatro direcciónes cercana a la celda vacía, el objetivo es simular el (des)ordenamiento natural humano. Intenta no regresar a la celda de donde viene.

Parameters:
nivel - la cantidad de movimientos aleatorios a realizar

resolver

public void resolver()
Resuelve el tablero. Ver Class Cerebro


addChangeListener

public void addChangeListener(javax.swing.event.ChangeListener l)
Agrega una vista receptora de eventos a la lista.

Parameters:
l - la vista que va a recibir el evento

removeChangeListener

public void removeChangeListener(javax.swing.event.ChangeListener l)
Remueve una vista receptora de eventos de la lista.

Parameters:
l - la vista que se va a eliminar

fireStateChanged

protected void fireStateChanged()
Avisa a todas las vistas que hubo un cambio en la tabla modelo de datos.