Class Environment

java.lang.Object
java.awt.Component
java.awt.Container
javax.swing.JComponent
javax.swing.JInternalFrame
com.tomtessier.scrollabledesktop.BaseInternalFrame
es.ull.mazesolver.gui.environment.Environment
All Implemented Interfaces:
ImageObserver, MenuContainer, Serializable, Accessible, RootPaneContainer, WindowConstants

public class Environment extends com.tomtessier.scrollabledesktop.BaseInternalFrame
Una instancia de esta clase representa un entorno de ejecución, formado por un laberinto y por un conjunto de agentes.
See Also:
Serialized Form
  • Constructor Details

    • Environment

      public Environment(Maze maze, String name)
      Constructor para las clases de tipo entorno.
      Parameters:
      maze - Laberinto en el que se basa el entorno. Puede ser compartido entre varios entornos.
      name - Nombre del entorno.
    • Environment

      public Environment(Maze maze)
      Constructor para las clases de tipo entorno.
      Parameters:
      maze - Laberinto en el que se basa el entorno. Puede ser compartido entre varios entornos.
  • Method Details

    • setEnvName

      public void setEnvName(String name)
      Cambia el nombre del entorno.
      Parameters:
      name - Nuevo nombre del entorno.
    • getEnvName

      public String getEnvName()
      Returns:
      El nombre del entorno.
    • setInteractionMode

      public void setInteractionMode(InteractionMode mode)
      Cambia el modo de interacción con el entorno.
      Parameters:
      mode - Nuevo modo de interacción con el entorno.
    • getMaze

      public Maze getMaze()
      Obtiene el laberinto contenido en el entorno.
      Returns:
      Laberinto base del entorno.
    • setMaze

      public void setMaze(Maze maze)
      Cambia el laberinto del entorno.

      Esta operación invalidaría la memoria almacenada del/los agentes en caso de que éstos contuvieran información sobre la ruta a llevar a cabo en el entorno, pero no cuando la memoria fuera un conjunto de reglas o una tabla de percepción-acción o cuando el agente no tuviera ninguna memoria.
      Parameters:
      maze - Laberinto en el que se basa el entorno.
    • updateSize

      public void updateSize()
      Actualiza el tamaño de la ventana con respecto al tamaño de su contenido, que es la representación del entorno.
    • look

      public MazeCell.Vision look(Point pos, Direction dir)
      Este método permite saber lo que puede ver un agente si mira en una dirección específica. La versión en la clase principal no maneja agentes, por lo que debe ser sobrecargada para gestionarlos.
      Parameters:
      pos - Posición desde la que mirar.
      dir - Dirección hacia la que mirar.
      Returns:
      Lo que vería un agente en la posición especificada si mirara hacia la dirección indicada.
    • movementAllowed

      public boolean movementAllowed(Point pos, Direction dir)
      Indica si a partir de una posición, el movimiento hacia una determinada posición es posible o no.
      Parameters:
      pos - Posición de partida.
      dir - Dirección de movimiento.
      Returns:
      true si se puede y false si no.
    • addAgent

      public void addAgent(Agent ag)
      Añade un agente al entorno.
      Parameters:
      ag - Agente que se quiere añadir al entorno.
    • removeAgent

      public void removeAgent(Agent ag)
      Elimina un agente del entorno.
      Parameters:
      ag - Referencia al agente que se quiere eliminar.
    • getSelectedAgent

      public Agent getSelectedAgent()
      Extrae una referencia al agente seleccionado dentro del entorno.
      Returns:
      Agente seleccionado actualmente en el entorno o null si no hay ninguno seleccionado.
    • getHoveredAgent

      public Agent getHoveredAgent()
      Extrae una referencia al agente dentro del entorno que tiene el cursor situado encima.
      Returns:
      Agente sobre el que se tiene el cursor actualmente en el entorno o null si el cursor no está encima de ningún agente.
    • getAgent

      public Agent getAgent(int index)
      Extrae una referencia a un agente del entorno.
      Parameters:
      index - Índice del agente que se quiere consultar.
      Returns:
      Agente número 'index' dentro del entorno.
    • getAgents

      public ArrayList<Agent> getAgents()
      Extrae una copia profunda de la lista de agentes que hay dentro del entorno. Hay que tener en cuenta que cualquier modificación en esta lista no va a tener ninguna repercusión en los agentes o el entorno original.
      Returns:
      Copia de la lista de agentes dentro del entorno.
    • getAgentCount

      public int getAgentCount()
      Obtiene el número de agentes que se encuentran en el entorno.
      Returns:
      Número de agentes actualmente en el entorno.
    • getBlackboardManager

      public BlackboardManager getBlackboardManager()
      Obtiene el gestor de pizarras del entorno.
      Returns:
      El gestor de pizarras del entorno.
    • getMessageManager

      public MessageManager getMessageManager()
      Obtiene el gestor de mensajes del entorno.
      Returns:
      El gestor de mensajes del entorno.
    • runStep

      public boolean runStep(SimulationResults results)
      Ejecuta un paso de la simulación de ejecución de los agentes en el entorno y devuelve el resultado de la ejecución.
      Parameters:
      results - Objeto que representa el resultado de la simulación, que será actualizado en este método para notificar de agentes que han llegado a la salida y para contar los pasos que han dado.
      Returns:
      true si todos los agentes han salido del laberinto y false en otro caso.
    • getInstancesCreated

      public static int getInstancesCreated()
      Returns:
      El número de instancias de la clase que han sido creadas.
    • equals

      public boolean equals(Object obj)
      Overrides:
      equals in class Object
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class Object