Package es.ull.mazesolver.maze
Class MazeCreationAlgorithm
java.lang.Object
es.ull.mazesolver.maze.MazeCreationAlgorithm
- Direct Known Subclasses:
AldousBroder
,EmptyMaze
,HuntAndKill
,Kruskal
,Prim
,RecursiveBacktracking
,RecursiveDivision
,Wilson
Interfaz que encapsula un algoritmo de creación de laberintos.
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected int
Numero de columnas del laberinto que se va a crear.Matriz de celdas del laberinto que se va a crear o se esá creando.protected Point
Punto de salida del laberinto.protected int
Número de filas del laberinto que se va a crear.static int
Número mínimo de columnas que puede tener un laberinto (anchura mínima).static int
Número mínimo de filas que puede tener un laberinto (altura mímia). -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionCrea el laberinto, coloca la salida y añade los ciclos y paredes indicados.getExit()
Devuelve la posición de la salida del laberinto.Este método crea un laberinto vacío a partir del número de filas y columnas especificado en el constructor.protected void
openPassage(int y, int x, Direction dir)
Abre un pasillo entre la celda (x, y) y su adyacente en la dirección indicada.protected abstract void
Ejecuta el algoritmo de creación del laberinto, dejando el resultado en la variable miembrom_maze
.void
setComponents(int n_components)
Establece el número de componentes separadas que se quiere tener al generar el laberinto.void
setCycles(int n_cycles)
Establece el número de ciclos que se quiere que genere el algoritmo.
-
Field Details
-
MIN_ROWS
public static final int MIN_ROWSNúmero mínimo de filas que puede tener un laberinto (altura mímia).- See Also:
- Constant Field Values
-
MIN_COLUMNS
public static final int MIN_COLUMNSNúmero mínimo de columnas que puede tener un laberinto (anchura mínima).- See Also:
- Constant Field Values
-
m_rows
protected int m_rowsNúmero de filas del laberinto que se va a crear. -
m_columns
protected int m_columnsNumero de columnas del laberinto que se va a crear. -
m_maze
Matriz de celdas del laberinto que se va a crear o se esá creando. -
m_maze_exit
Punto de salida del laberinto.
-
-
Constructor Details
-
MazeCreationAlgorithm
public MazeCreationAlgorithm(int rows, int columns)Constructor. Crea una nueva instancia de la clase.- Parameters:
rows
- Número de filas del laberinto.columns
- Número de columnas del laberinto.
-
-
Method Details
-
getExit
Devuelve la posición de la salida del laberinto.- Returns:
- La posición de la salida del laberinto.
-
createMaze
Crea el laberinto, coloca la salida y añade los ciclos y paredes indicados.- Returns:
- La matriz que contiene las celdas del laberinto.
-
setCycles
public void setCycles(int n_cycles)Establece el número de ciclos que se quiere que genere el algoritmo.- Parameters:
n_cycles
- Número de ciclos.
-
setComponents
public void setComponents(int n_components)Establece el número de componentes separadas que se quiere tener al generar el laberinto. Si se especifica 1, no se modifica el laberinto perfecto.- Parameters:
n_components
- Número de componentes.
-
runCreationAlgorithm
protected abstract void runCreationAlgorithm()Ejecuta el algoritmo de creación del laberinto, dejando el resultado en la variable miembrom_maze
.Cuando se llama a este método, la variable está inicializada con un mapa en el que todas las celdas están rodeadas de paredes.
-
initializeMaze
Este método crea un laberinto vacío a partir del número de filas y columnas especificado en el constructor. Hace más sencillo a las subclases implementar el métodocreateMaze()
.- Returns:
- Un laberinto vacío del tamaño especificado.
-
openPassage
Abre un pasillo entre la celda (x, y) y su adyacente en la dirección indicada.- Parameters:
y
- Posición en el eje Y (FILA).x
- Posición en el eje X (COLUMNA).dir
- Dirección hacia la que abrir el camino.
-