Class MazeCreationAlgorithm

java.lang.Object
es.ull.mazesolver.maze.MazeCreationAlgorithm
Direct Known Subclasses:
AldousBroder, EmptyMaze, HuntAndKill, Kruskal, Prim, RecursiveBacktracking, RecursiveDivision, Wilson

public abstract class MazeCreationAlgorithm extends Object
Interfaz que encapsula un algoritmo de creación de laberintos.
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    protected 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
    Constructor
    Description
    MazeCreationAlgorithm​(int rows, int columns)
    Constructor.
  • Method Summary

    Modifier and Type
    Method
    Description
    Crea el laberinto, coloca la salida y añade los ciclos y paredes indicados.
    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 miembro m_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.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • MIN_ROWS

      public static final int MIN_ROWS
      Nú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_COLUMNS
      Número mínimo de columnas que puede tener un laberinto (anchura mínima).
      See Also:
      Constant Field Values
    • m_rows

      protected int m_rows
      Número de filas del laberinto que se va a crear.
    • m_columns

      protected int m_columns
      Numero de columnas del laberinto que se va a crear.
    • m_maze

      protected ArrayList<ArrayList<MazeCell>> m_maze
      Matriz de celdas del laberinto que se va a crear o se esá creando.
    • m_maze_exit

      protected Point 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

      public Point getExit()
      Devuelve la posición de la salida del laberinto.
      Returns:
      La posición de la salida del laberinto.
    • createMaze

      public ArrayList<ArrayList<MazeCell>> 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 miembro m_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

      protected ArrayList<ArrayList<MazeCell>> 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étodo createMaze().
      Returns:
      Un laberinto vacío del tamaño especificado.
    • openPassage

      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.
      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.