Package es.ull.mazesolver.agent
Class Agent
java.lang.Object
es.ull.mazesolver.agent.Agent
- All Implemented Interfaces:
Serializable
,Cloneable
- Direct Known Subclasses:
HeuristicAgent
,PATableAgent
,RecursiveAgent
,SARulesAgent
,WallFollowerAgent
Clase que representa un agente abstracto que se encuentra en algún laberinto.
Sus subclases implementan los distintos algoritmos para resolver laberintos.
Cada agente debe implementar los métodos de serialización para poder guardarse y cargarse correctamente, en caso de que requiriesen configuración adicional a la genérica.
Cada agente debe implementar los métodos de serialización para poder guardarse y cargarse correctamente, en caso de que requiriesen configuración adicional a la genérica.
- See Also:
- Serialized Form
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected Environment
Entorno en el que reside el agente.protected Point
Posición en la que se encuentra el agente. -
Constructor Summary
ConstructorsModifierConstructorDescriptionprotected
Agent(Environment env)
Crea un nuevo agente en el entorno. -
Method Summary
Modifier and TypeMethodDescriptionabstract Object
clone()
void
doMovement(Direction dir)
Hace que el agente realice el movimiento especificado, sin comprobar que se trata de un movimiento válido.boolean
Pregunta al agente su color.Pregunta al agente el nombre que le identifica.abstract Color
Pregunta al agente el color por defecto de los agentes de su tipo.abstract String
Pregunta al agente el nombre del algoritmo que implementa.abstract AgentConfigurationPanel
Obtiene el panel de configuración asociado al agente.Obtiene el entorno en el que se encuentra el agente.abstract Direction
Obtiene el siguiente movimiento dado el estado actual del agente.getPos()
Obtiene la posición del agente.int
getX()
Obtiene la posición en el eje X del agente.int
getY()
Obtiene la posición en el eje Y del agente.int
hashCode()
static Agent
loadFile(String filename, Environment env)
Carga la descripción serializada del agente de un fichero, lo crea y lo devuelve.Obtiene la visión que tiene el agente al mirar en la dirección indicada.abstract void
Elimina la memoria que el agente tenga sobre el entorno.void
Guarda la instancia del agente en un fichero utilizando su serialización.void
setAgentColor(Color color)
Cambia el color del agente.void
setAgentName(String name)
Cambia el nombre del agente.void
setEnvironment(Environment env)
Cambia el entorno en el que se sitúa el agente.void
setPosition(Point pos)
Establece la posición del agente.
-
Field Details
-
m_env
Entorno en el que reside el agente. -
m_pos
Posición en la que se encuentra el agente.
-
-
Constructor Details
-
Agent
Crea un nuevo agente en el entorno. Le asigna un ID único y lo coloca en el punto (0,0).- Parameters:
env
- Entorno al que va a ser asignado dicho agente.
-
-
Method Details
-
setPosition
Establece la posición del agente.
Este método se puede sobrecargar en las clases derivadas para mantener coherente la memoria de la que disponga el mismo.- Parameters:
pos
- Nueva posición del agente.
-
getX
public int getX()Obtiene la posición en el eje X del agente.- Returns:
- Posición en el eje X del agente.
-
getY
public int getY()Obtiene la posición en el eje Y del agente.- Returns:
- Posición en el eje Y de agente.
-
getPos
Obtiene la posición del agente.- Returns:
- Posición del agente.
-
setEnvironment
Cambia el entorno en el que se sitúa el agente.
Este método debería sobrecargarse en las clases derivadas que contengan información acerca del camino a seguir por el agente (un plan) de forma que éste siga siendo coherente tras el cambio de laberinto.- Parameters:
env
- Entorno donde colocar el agente.
-
getEnvironment
Obtiene el entorno en el que se encuentra el agente.- Returns:
- Entorno en el que se encuentra el agente.
-
look
Obtiene la visión que tiene el agente al mirar en la dirección indicada.- Parameters:
dir
- Dirección hacia la que mirar.- Returns:
- Lo que vería el agente si mira en la dirección especificada.
-
equals
-
hashCode
public int hashCode() -
doMovement
Hace que el agente realice el movimiento especificado, sin comprobar que se trata de un movimiento válido.
La clase base sólo cambia la posición del agente, si se desea más funcionalidad, se debe sobrecargar en las clases derivadas.- Parameters:
dir
- Dirección hacia la que mover el agente.
-
setAgentName
Cambia el nombre del agente.- Parameters:
name
- Nombre del agente.
-
getAgentName
Pregunta al agente el nombre que le identifica.- Returns:
- Nombre identificador del agente. Por defecto incluye el nombre del algoritmo que implementa.
-
setAgentColor
Cambia el color del agente.- Parameters:
color
- Nuevo color del agente.
-
getAgentColor
Pregunta al agente su color.- Returns:
- El color del agente.
-
loadFile
Carga la descripción serializada del agente de un fichero, lo crea y lo devuelve.- Parameters:
filename
- Nombre del fichero de entrada.env
- Entorno en el que cargar el agente.- Returns:
- El agente creado.
- Throws:
IOException
- Si no es posible leer el fichero.
-
saveFile
Guarda la instancia del agente en un fichero utilizando su serialización.- Parameters:
filename
- Nombre del fichero de salida.- Throws:
IOException
- Si no es posible guardar el fichero.
-
getAlgorithmName
Pregunta al agente el nombre del algoritmo que implementa.- Returns:
- Nombre del algoritmo que implementa.
-
getAlgorithmColor
Pregunta al agente el color por defecto de los agentes de su tipo.- Returns:
- Color por defecto de los agentes que implementan ese algoritmo.
-
getNextMovement
Obtiene el siguiente movimiento dado el estado actual del agente.- Returns:
- La dirección en la que el agente quiere realizar el siguiente movimiento.
-
resetMemory
public abstract void resetMemory()Elimina la memoria que el agente tenga sobre el entorno. No elimina su configuración, sino que lo deja en el estado inicial. -
getConfigurationPanel
Obtiene el panel de configuración asociado al agente.- Returns:
- Un panel de configuración para el agente.
-
clone
-