Class SimulationEngine

java.lang.Object
com.tt1.simserver.logic.SimulationEngine
All Implemented Interfaces:
SimulationEngineInterface, Runnable

public class SimulationEngine extends Object implements SimulationEngineInterface
Motor encargado de ejecutar la lógica interna de una simulación. Implementa Runnable para permitir su ejecución en un hilo de procesamiento independiente.
  • Constructor Summary

    Constructors
    Constructor
    Description
    SimulationEngine(GridInterface initialGrid, int maxSteps)
    Inicializa el motor de simulación definiendo su tablero y su límite de duración.
  • Method Summary

    Modifier and Type
    Method
    Description
    Extrae el objeto que empaqueta los historiales del proceso simulado.
    boolean
    Comprueba de forma segura y sincronizada si el motor de la simulación ha terminado.
    void
    run()
    Lógica principal del cálculo continuo a lanzar desde un hilo.

    Methods inherited from class java.lang.Object

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

    • SimulationEngine

      public SimulationEngine(GridInterface initialGrid, int maxSteps)
      Inicializa el motor de simulación definiendo su tablero y su límite de duración.

      Precondición: initialGrid no es nulo y maxSteps es 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:
      isDone in interface SimulationEngineInterface
      Returns:
      el estado actual de finalización.
    • getResult

      public SimulationResult 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:
      getResult in interface SimulationEngineInterface
      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.

      Specified by:
      run in interface Runnable