Class Grid
- All Implemented Interfaces:
GridInterface
-
Constructor Summary
ConstructorsConstructorDescriptionGrid(int numberOfCreatures, double occupancy) Inicializa un tablero vacío calculando su tamaño a partir del número de criaturas y la ocupación.Grid(List<CreatureInterface> creatures, double occupancy) Inicializa un tablero y ubica en él una lista de criaturas. -
Method Summary
Modifier and TypeMethodDescriptionfinal voidaddCreature(CreatureInterface creature) Añade una criatura al tablero usando su posición interna.getAdjacentEmptyCells(Position position) Obtiene las posiciones adyacentes (derecha, arriba, izquierda, abajo) cuyas casillas están libres.getCreature(Position position) Obtiene la criatura situada en una posición concreta.intgetSize()Obtiene el tamaño del lado del tablero.booleanComprueba si una posición es válida y su casilla está libre.voidtick()Avanza el estado del tablero en un turno temporal completo.
-
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:
numberOfCreatureses mayor que 0.occupancyes 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
Inicializa un tablero y ubica en él una lista de criaturas.Precondición:
creaturesno es nulo ni está vacío.occupancyes 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:
tickin interfaceGridInterface
-
getCreature
Obtiene la criatura situada en una posición concreta.Precondición:
positionno 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:
getCreaturein interfaceGridInterface- 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:
getSizein interfaceGridInterface- Returns:
- el tamaño del tablero.
-
isEmpty
Comprueba si una posición es válida y su casilla está libre.Precondición:
positionno 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:
isEmptyin interfaceGridInterface- Parameters:
position- la posición a evaluar.- Returns:
- verdadero si la casilla está libre y es válida, falso en caso contrario.
-
addCreature
Añade una criatura al tablero usando su posición interna.Precondición:
creatureno 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:
addCreaturein interfaceGridInterface- Parameters:
creature- la criatura a registrar en el tablero.
-
getAdjacentEmptyCells
Obtiene las posiciones adyacentes (derecha, arriba, izquierda, abajo) cuyas casillas están libres.Precondición:
positionno 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:
getAdjacentEmptyCellsin interfaceGridInterface- Parameters:
position- la posición central para evaluar las adyacentes.- Returns:
- una lista de posiciones adyacentes con casillas vacías.
-