Class Maze

java.lang.Object
es.ull.mazesolver.maze.Maze

public class Maze extends Object
Clase que representa un laberinto.
  • Constructor Summary

    Constructors
    Constructor
    Description
    Crea un laberinto a partir de un algoritmo de generación de laberintos ya inicializado.
    Maze​(String fileName)
    Crea un laberinto a partir de su versión serializada en un fichero.
  • Method Summary

    Modifier and Type
    Method
    Description
    boolean
    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.
    Obtiene una copia del lugar donde está la salida del laberinto.
    int
    Obtiene el número de filas (altura) del laberinto.
    int
    Obtiene el número de columnas (anchura) del laberinto.
    void
    loadFile​(String fileName)
    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
    saveFile​(String fileName)
    Guarda la actual instancia de la clase Maze en un fichero mediante su serialización.
    void
    set​(int row, int column, MazeCell cell)
    Establece el contenido de una celda en el laberinto.
    void
    setExit​(int pos, Direction dir)
    Cambia la salida del laberinto a otro lugar, añadiendo y eliminando las paredes necesarias.

    Methods inherited from class java.lang.Object

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

    • Maze

      public Maze(MazeCreationAlgorithm alg)
      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

      public Maze(String fileName) throws IOException
      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

      public MazeCell get(int row, int column)
      Obtiene la celda situada en una posición concreta del laberinto.
      Parameters:
      row - Fila.
      column - Columna.
      Returns:
      Celda en la posición indicada.
    • set

      public void set(int row, int column, MazeCell cell)
      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

      public void setExit(int pos, Direction dir)
      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

      public Point getExit()
      Obtiene una copia del lugar donde está la salida del laberinto.
      Returns:
      La posición donde se encuentra la salida al laberinto.
    • containsPoint

      public boolean containsPoint(Point p)
      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

      public void loadFile(String fileName) throws IOException
      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

      public void saveFile(String fileName) throws IOException
      Guarda la actual instancia de la clase Maze 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.