Package es.ull.mazesolver.maze
Class Maze
java.lang.Object
es.ull.mazesolver.maze.Maze
Clase que representa un laberinto.
-
Constructor Summary
ConstructorsConstructorDescriptionMaze(MazeCreationAlgorithm alg)
Crea un laberinto a partir de un algoritmo de generación de laberintos ya inicializado.Crea un laberinto a partir de su versión serializada en un fichero. -
Method Summary
Modifier and TypeMethodDescriptionboolean
containsPoint(Point p)
Determina si el punto se encuentra dentro del laberinto o no.get(int row, int column)
Obtiene la celda situada en una posición concreta del laberinto.getExit()
Obtiene una copia del lugar donde está la salida del laberinto.int
Obtiene el número de filas (altura) del laberinto.int
getWidth()
Obtiene el número de columnas (anchura) del laberinto.void
Carga una instancia de laberinto de un fichero que contiene una instancia de esta clase serializada.static int
perfectMazeEdges(int rows, int columns)
Calcula el número de aristas que tiene un laberinto perfecto de las dimensiones dadas.static int
perfectMazeWalls(int rows, int columns)
Calcula el número máximo de aristas que se pueden añadir en un laberinto del tamaño dado.void
Guarda la actual instancia de la claseMaze
en un fichero mediante su serialización.void
Establece el contenido de una celda en el laberinto.void
Cambia la salida del laberinto a otro lugar, añadiendo y eliminando las paredes necesarias.
-
Constructor Details
-
Maze
Crea un laberinto a partir de un algoritmo de generación de laberintos ya inicializado.- Parameters:
alg
- Algoritmo de creación de laberintos ya inicializado
-
Maze
Crea un laberinto a partir de su versión serializada en un fichero.- Parameters:
fileName
- Nombre del fichero del que cargar el laberinto.- Throws:
IOException
- Cuando no se encuentra el fichero, no se puede abrir para su lectura o no contiene un laberinto válido.
-
-
Method Details
-
get
Obtiene la celda situada en una posición concreta del laberinto.- Parameters:
row
- Fila.column
- Columna.- Returns:
- Celda en la posición indicada.
-
set
Establece el contenido de una celda en el laberinto.- Parameters:
row
- Fila.column
- Columna.cell
- Celda que se quiere introducir.
-
getWidth
public int getWidth()Obtiene el número de columnas (anchura) del laberinto.- Returns:
- Anchura (en celdas) del laberinto.
-
getHeight
public int getHeight()Obtiene el número de filas (altura) del laberinto.- Returns:
- Altura (en celdas) del laberinto.
-
setExit
Cambia la salida del laberinto a otro lugar, añadiendo y eliminando las paredes necesarias.- Parameters:
pos
- Índice de la celda en la que se quiere colocar la salida. Dependiendo de la dirección este valor se referirá a una columna (si la dirección es arriba o abajo) o a una fila (si la dirección es izquierda o derecha).dir
- Borde del laberinto donde colocar la salida.
-
getExit
Obtiene una copia del lugar donde está la salida del laberinto.- Returns:
- La posición donde se encuentra la salida al laberinto.
-
containsPoint
Determina si el punto se encuentra dentro del laberinto o no.- Parameters:
p
- Punto a testear.- Returns:
- Si el punto está dentro del laberinto o no.
-
loadFile
Carga una instancia de laberinto de un fichero que contiene una instancia de esta clase serializada.- Parameters:
fileName
- Nombre del fichero del que cargar el laberinto.- Throws:
IOException
- Cuando no se encuentra el fichero, no se puede abrir para su lectura o no contiene un laberinto válido.
-
saveFile
Guarda la actual instancia de la claseMaze
en un fichero mediante su serialización.- Parameters:
fileName
- Nombre del fichero donde guardar el laberinto.- Throws:
IOException
- Cuando el fichero no se puede abrir o no se tienen permisos de escritura en el mismo.
-
perfectMazeWalls
public static int perfectMazeWalls(int rows, int columns)Calcula el número máximo de aristas que se pueden añadir en un laberinto del tamaño dado. Cada arista se refiere a un pasillo abierto entre 2 celdas. Se puede ver como el número de paredes que tiene en su interior un laberinto perfecto, sin contar el contorno.- Parameters:
rows
- Número de filas.columns
- Número de columnas.- Returns:
- Número de paredes en el interior del laberinto.
-
perfectMazeEdges
public static int perfectMazeEdges(int rows, int columns)Calcula el número de aristas que tiene un laberinto perfecto de las dimensiones dadas. Las aristas representan pasillos entre 2 celdas.- Parameters:
rows
- Númnero de filas.columns
- Número de columnas.- Returns:
- Número de aristas del laberinto perfecto.
-