Class SimulationEngine
- All Implemented Interfaces:
SimulationEngineInterface,Runnable
Runnable para permitir su ejecución en un hilo de procesamiento independiente.-
Constructor Summary
ConstructorsConstructorDescriptionSimulationEngine(GridInterface initialGrid, int maxSteps) Inicializa el motor de simulación definiendo su tablero y su límite de duración. -
Method Summary
-
Constructor Details
-
SimulationEngine
Inicializa el motor de simulación definiendo su tablero y su límite de duración.Precondición:
initialGridno es nulo ymaxStepses mayor que cero.Postcondición: Prepara la ejecución reteniendo el tablero inicial y fijando el total de turnos a procesar. El estado inicial se marca como no terminado.
- Parameters:
initialGrid- el estado inicial del tablero configurado a simular.maxSteps- el número máximo de turnos de vida de la simulación.
-
-
Method Details
-
isDone
public boolean isDone()Comprueba de forma segura y sincronizada si el motor de la simulación ha terminado.Precondición: Ninguna.
Postcondición: Devuelve verdadero si la simulación completó la ejecución de todos los turnos preestablecidos. Devuelve falso mientras no ha arrancado o sigue procesando.
- Specified by:
isDonein interfaceSimulationEngineInterface- Returns:
- el estado actual de finalización.
-
getResult
Extrae el objeto que empaqueta los historiales del proceso simulado.Precondición: Ninguna.
Postcondición: Devuelve el contenedor histórico poblado con las disposiciones del tablero solo si la simulación ya ha terminado. Devuelve nulo para evitar accesos tempranos si no ha finalizado.
- Specified by:
getResultin interfaceSimulationEngineInterface- Returns:
- los datos con el resultado de la simulación o nulo si sigue en ejecución.
-
run
public void run()Lógica principal del cálculo continuo a lanzar desde un hilo.Precondición: El tablero asociado en el constructor está disponible y es válido.
Postcondición: Captura y empuja al historial el tablero de origen. A continuación obliga iterativamente al tablero a avanzar exactamente los turnos solicitados en
maxSteps, almacenando el estado interno tras resolver cada turno. Al agotar el límite temporal, se auto marca de forma sincronizada como terminado.
-