Class Grid

java.lang.Object
com.tt1.simserver.logic.Grid
All Implemented Interfaces:
GridInterface

public class Grid extends Object implements GridInterface
Representa el tablero bidimensional donde interactúan y se sitúan las criaturas de la simulación. El tablero se modela como una matriz cuadrada.
  • Constructor Details

    • Grid

      public Grid(int numberOfCreatures, double occupancy)
      Inicializa un tablero vacío calculando su tamaño a partir del número de criaturas y la ocupación.

      Precondición: numberOfCreatures es mayor que 0. occupancy es mayor que 0.0 y menor o igual a 1.0.

      Postcondición: Crea un tablero cuadrado. El tamaño se calcula como la raíz cuadrada de (criaturas / ocupación), redondeado hacia arriba. Todas las casillas están vacías.

      Parameters:
      numberOfCreatures - el número total de criaturas.
      occupancy - la fracción de ocupación esperada en el tablero.
    • Grid

      public Grid(List<CreatureInterface> creatures, double occupancy)
      Inicializa un tablero y ubica en él una lista de criaturas.

      Precondición: creatures no es nulo ni está vacío. occupancy es mayor que 0.0 y menor o igual a 1.0. Todas las criaturas tienen una posición única que cae dentro del tamaño calculado para el tablero.

      Postcondición: Crea un tablero con el tamaño calculado. Cada criatura se coloca en la casilla que indica su posición inicial.

      Parameters:
      creatures - la lista de criaturas a colocar en el tablero.
      occupancy - la fracción de ocupación esperada en el tablero.
  • Method Details

    • tick

      public void tick()
      Avanza el estado del tablero en un turno temporal completo.

      Precondición: El tablero está inicializado.

      Postcondición: Recorre todas las posiciones en orden, de izquierda a derecha y de arriba a abajo. Para cada criatura, procesa su movimiento y luego su reproducción. Si la criatura decide moverse, su casilla origen queda vacía y ocupa la nueva posición. Si decide reproducirse, la nueva criatura aparece en su casilla de destino. Las criaturas actúan solo una vez por turno. Las criaturas recién nacidas no actúan en el turno que aparecen.

      Specified by:
      tick in interface GridInterface
    • getCreature

      public CreatureInterface getCreature(Position position)
      Obtiene la criatura situada en una posición concreta.

      Precondición: position no es nulo y sus coordenadas están dentro de los límites del tablero.

      Postcondición: Devuelve la criatura que ocupa la casilla indicada. Devuelve nulo si la casilla está vacía.

      Specified by:
      getCreature in interface GridInterface
      Parameters:
      position - la posición exacta de la casilla a consultar.
      Returns:
      la criatura en la casilla, o nulo si está vacía.
    • getSize

      public int getSize()
      Obtiene el tamaño del lado del tablero.

      Precondición: El tablero está inicializado.

      Postcondición: Devuelve el número de filas (o columnas) del tablero.

      Specified by:
      getSize in interface GridInterface
      Returns:
      el tamaño del tablero.
    • isEmpty

      public boolean isEmpty(Position position)
      Comprueba si una posición es válida y su casilla está libre.

      Precondición: position no es nulo.

      Postcondición: Devuelve verdadero si la posición está dentro del tablero y su casilla no contiene ninguna criatura. Devuelve falso si la casilla tiene una criatura o si la posición sale de los límites del tablero.

      Specified by:
      isEmpty in interface GridInterface
      Parameters:
      position - la posición a evaluar.
      Returns:
      verdadero si la casilla está libre y es válida, falso en caso contrario.
    • addCreature

      public final void addCreature(CreatureInterface creature)
      Añade una criatura al tablero usando su posición interna.

      Precondición: creature no es nulo. Su posición está dentro de los límites del tablero y apunta a una casilla vacía.

      Postcondición: La criatura se almacena en el tablero, ocupando su casilla correspondiente.

      Specified by:
      addCreature in interface GridInterface
      Parameters:
      creature - la criatura a registrar en el tablero.
    • getAdjacentEmptyCells

      public List<Position> getAdjacentEmptyCells(Position position)
      Obtiene las posiciones adyacentes (derecha, arriba, izquierda, abajo) cuyas casillas están libres.

      Precondición: position no es nulo.

      Postcondición: Devuelve una lista con las posiciones adyacentes que están dentro del tablero y cuyas casillas no tienen ninguna criatura. Las posiciones fuera del tablero o con criaturas se descartan.

      Specified by:
      getAdjacentEmptyCells in interface GridInterface
      Parameters:
      position - la posición central para evaluar las adyacentes.
      Returns:
      una lista de posiciones adyacentes con casillas vacías.