Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found
Select Git revision
  • main
  • variant
2 results

Target

Select target project
  • m19023837/firefighter-starter-mansour-chadi-chahine-rami
  • r24025701/firefighterstarter
  • n24026202/firefighterstarter
  • couetoux.b/firefighterstarter
  • b23027938/firefighterstarter
  • z20039716/fire-fighter
  • a18023913/firefighterstarter
  • o22010261/firefighterstarter
  • b22015516/firefighterstarter
  • alaboure/firefighter-template
  • p21211679/firefighter-luis-parra-yanis-lounadi
  • v23014723/firefighter-project
  • k20014011/firefighter-template
  • m23022217/firefighter-template
  • p20006624/firefighter-template
  • l21221596/firefighter-template
  • s21232465/firefighter-template
  • y21224754/firefighter-template
  • w21225935/firefighter-template
  • h22023886/firefighter-template
  • b21221604/firefighter-template-boucenna-yacine-zeghar-mohamed-lamine
  • c23025119/firefighterstarter
  • b20031964/firefighterstarter
23 results
Select Git revision
  • main
  • variant
2 results
Show changes
Commits on Source (39)
Showing
with 527 additions and 61 deletions
...@@ -19,6 +19,8 @@ public class SimulatorApplication extends javafx.application.Application { ...@@ -19,6 +19,8 @@ public class SimulatorApplication extends javafx.application.Application {
private static final int BOX_HEIGHT = 50; private static final int BOX_HEIGHT = 50;
public static final int INITIAL_FIRE_COUNT = 3; public static final int INITIAL_FIRE_COUNT = 3;
public static final int INITIAL_FIREFIGHTER_COUNT = 6; public static final int INITIAL_FIREFIGHTER_COUNT = 6;
private static final int INITIAL_CLOUD_COUNT = 5;
private static final int INITIAL_MOUNTAIN_COUNT = 5;
private Stage primaryStage; private Stage primaryStage;
private Parent view; private Parent view;
...@@ -44,7 +46,7 @@ public class SimulatorApplication extends javafx.application.Application { ...@@ -44,7 +46,7 @@ public class SimulatorApplication extends javafx.application.Application {
view = loader.load(); view = loader.load();
Controller controller = loader.getController(); Controller controller = loader.getController();
controller.initialize(BOX_WIDTH, BOX_HEIGHT, COLUMN_COUNT, ROW_COUNT, controller.initialize(BOX_WIDTH, BOX_HEIGHT, COLUMN_COUNT, ROW_COUNT,
INITIAL_FIRE_COUNT, INITIAL_FIREFIGHTER_COUNT); INITIAL_FIRE_COUNT, INITIAL_FIREFIGHTER_COUNT, INITIAL_CLOUD_COUNT, INITIAL_MOUNTAIN_COUNT);
} }
private void showScene() { private void showScene() {
......
...@@ -88,6 +88,12 @@ public class Controller { ...@@ -88,6 +88,12 @@ public class Controller {
if (squareState.contains(ModelElement.FIRE)){ if (squareState.contains(ModelElement.FIRE)){
return ViewElement.FIRE; return ViewElement.FIRE;
} }
if (squareState.contains(ModelElement.CLOUD)){
return ViewElement.CLOUD;
}
if(squareState.contains(ModelElement.MOUNTAIN)){
return ViewElement.MOUNTAIN;
}
return ViewElement.EMPTY; return ViewElement.EMPTY;
} }
...@@ -124,9 +130,9 @@ public class Controller { ...@@ -124,9 +130,9 @@ public class Controller {
} }
public void initialize(int squareWidth, int squareHeight, int columnCount, public void initialize(int squareWidth, int squareHeight, int columnCount,
int rowCount, int initialFireCount, int initialFirefighterCount) { int rowCount, int initialFireCount, int initialFirefighterCount, int initialCloudCount, int initialMountainCount) {
grid.setDimensions(columnCount, rowCount, squareWidth, squareHeight); grid.setDimensions(columnCount, rowCount, squareWidth, squareHeight);
this.setModel(new FirefighterBoard(columnCount, rowCount, initialFireCount, initialFirefighterCount)); this.setModel(new FirefighterBoard(columnCount, rowCount, initialFireCount, initialFirefighterCount, initialCloudCount, initialMountainCount));
repaintGrid(); repaintGrid();
} }
......
package model;
import util.Position;
public interface BoardElement {
Position getPosition();
void setPosition(Position position);
}
package model;
import util.Position;
import java.util.*;
public class Cloud {
private Position position;
private final Map<Position, List<Position>> neighbors;
private final Random randomGenerator = new Random();
public Cloud(Position startPosition, Map<Position, List<Position>> neighbors) {
this.position = startPosition;
this.neighbors = neighbors;
}
public void move() {
List<Position> validNeighbors = neighbors.get(position);
this.position = validNeighbors.get(randomGenerator.nextInt(validNeighbors.size()));
}
public void extinguishSurroundingFires(Fire fire) {
for (Position neighbor : neighbors.get(position)) {
fire.extinguishFire(neighbor); // Éteint les feux adjacents
}
}
public Position getPosition() {
return position;
}
public void protectFromFire(Fire fire) {
fire.getFirePositions().remove(position);
}
public void extinguishSurroundingFires(Set<Position> firePositions, Map<Position, List<Position>> neighbors) {
for (Position neighbor : neighbors.get(position)) {
Fire.extinguishFire(neighbor); // Éteint les feux adjacents
}
}
}
package model;
import util.Position;
import java.util.*;
public class Fire {
private static Set<Position> firePositions;
private static Map<Position, List<Position>> neighbors;
public Fire(Set<Position> firePositions, Map<Position, List<Position>> neighbors) {
this.firePositions = firePositions;
this.neighbors = neighbors;
}
public Position getPosition(){
return firePositions.iterator().next();
}
public void setPosition(Position p){
this.firePositions.add(p);
}
public static Set<Position> getFirePositions() {
return firePositions;
}
public static List<Position> spreadFire(Set<Position> mountains) {
List<Position> newFires = new ArrayList<>();
for (Position firePosition : firePositions) {
for (Position neighbor : neighbors.get(firePosition)) {
if (!mountains.contains(neighbor) && !firePositions.contains(neighbor)) {
newFires.add(neighbor);
}
}
}
firePositions.addAll(newFires);
return newFires;
}
public static void extinguishFire(Position neighbor) {
firePositions.remove(neighbor);
}
}
package model;
import util.Position;
import java.util.List;
import java.util.Map;
import java.util.Set;
public class Firefighter {
private Position position;
public Firefighter(Position position) {
this.position = position;
}
public Position getPosition() {
return position;
}
public void setPosition(Position position) {
this.position = position;
}
public Position moveToBestPosition(Set<Position> firePositions, Map<Position, List<Position>> neighbors, Set<Position> mountains) {
Position currentPosition = getPosition();
Position bestPosition = currentPosition;
int minDistance = Integer.MAX_VALUE;
for (Position neighbor : neighbors.get(currentPosition)) {
if (mountains.contains(neighbor)) continue;
for (Position firePosition : firePositions) {
int distance = Math.abs(firePosition.row() - neighbor.row()) + Math.abs(firePosition.column() - neighbor.column());
if (distance < minDistance) {
minDistance = distance;
bestPosition = neighbor;
}
}
}
return bestPosition;
}
public void extinguish(Position position, Set<Position> firePositions) {
firePositions.remove(position);
}
}
...@@ -4,21 +4,24 @@ import util.Position; ...@@ -4,21 +4,24 @@ import util.Position;
import java.util.*; import java.util.*;
public class FirefighterBoard implements Board<List<ModelElement>> { public class FirefighterBoard implements Board<List<ModelElement>> {
private final int columnCount; private final int columnCount;
private final int rowCount; private final int rowCount;
private final int initialFireCount; private final int initialFireCount;
private final int initialFirefighterCount; private final int initialFirefighterCount;
private final TargetStrategy targetStrategy = new TargetStrategy(); private final int initialCloudCount;
private List<Position> firefighterPositions; private final int initialMountainCount = 3;
private Set<Position> firePositions; private final model.TargetStrategy targetStrategy = new model.TargetStrategy();
private Map<Position, List<Position>> neighbors = new HashMap(); private List<Firefighter> firefighters;
private Fire fire;
private final Map<Position, List<Position>> neighbors = new HashMap<>();
private List<Cloud> clouds;
private List<Mountain> mountains;
private final Position[][] positions; private final Position[][] positions;
private int step = 0; private int step = 0;
private final Random randomGenerator = new Random(); private final Random randomGenerator = new Random();
public FirefighterBoard(int columnCount, int rowCount, int initialFireCount, int initialFirefighterCount) { public FirefighterBoard(int columnCount, int rowCount, int initialFireCount, int initialFirefighterCount, int initialCloudCount, int initialMountainCount) {
this.columnCount = columnCount; this.columnCount = columnCount;
this.rowCount = rowCount; this.rowCount = rowCount;
this.positions = new Position[rowCount][columnCount]; this.positions = new Position[rowCount][columnCount];
...@@ -36,16 +39,46 @@ public class FirefighterBoard implements Board<List<ModelElement>> { ...@@ -36,16 +39,46 @@ public class FirefighterBoard implements Board<List<ModelElement>> {
} }
this.initialFireCount = initialFireCount; this.initialFireCount = initialFireCount;
this.initialFirefighterCount = initialFirefighterCount; this.initialFirefighterCount = initialFirefighterCount;
this.initialCloudCount = initialCloudCount;
initializeElements(); initializeElements();
} }
public void initializeElements() { public void initializeElements() {
firefighterPositions = new ArrayList<>(); firefighters = new ArrayList<>();
firePositions = new HashSet<>(); clouds = new ArrayList<>();
mountains = new ArrayList<>();
Set<Position> firePositions = new HashSet<>();
for (int index = 0; index < initialCloudCount; index++) {
clouds.add(new Cloud(randomPosition(), neighbors));
}
for (int index = 0; index < initialFireCount; index++) for (int index = 0; index < initialFireCount; index++)
firePositions.add(randomPosition()); firePositions.add(randomPosition());
fire = new Fire(firePositions, neighbors);
for (int index = 0; index < initialFirefighterCount; index++) for (int index = 0; index < initialFirefighterCount; index++)
firefighterPositions.add(randomPosition()); firefighters.add(new Firefighter(randomPosition()));
for (int index = 0; index < initialCloudCount; index++) {
clouds.add(new Cloud(randomPosition(), neighbors));
}
for (int i = 0; i < initialMountainCount; i++) {
Position position = randomPosition();
if (isPositionOccupied(position)) continue;
mountains.add(new Mountain(position));
}
}
private boolean isPositionOccupied(Position position) {
// Vérifie si la position est occupée par une montagne
for (Mountain mountain : mountains) {
if (mountain.getPosition().equals(position)) return true;
}
// Vérifie les autres éléments
for (Firefighter firefighter : firefighters) {
if (firefighter.getPosition().equals(position)) return true;
}
for (Cloud cloud : clouds) {
if (cloud.getPosition().equals(position)) return true;
}
return fire.getFirePositions().contains(position);
} }
private Position randomPosition() { private Position randomPosition() {
...@@ -55,10 +88,22 @@ public class FirefighterBoard implements Board<List<ModelElement>> { ...@@ -55,10 +88,22 @@ public class FirefighterBoard implements Board<List<ModelElement>> {
@Override @Override
public List<ModelElement> getState(Position position) { public List<ModelElement> getState(Position position) {
List<ModelElement> result = new ArrayList<>(); List<ModelElement> result = new ArrayList<>();
for (Position firefighterPosition : firefighterPositions) for (Cloud cloud : clouds) {
if (firefighterPosition.equals(position)) if (cloud.getPosition().equals(position)) {
result.add(ModelElement.CLOUD);
}
}
for (Mountain mountain : mountains){
if(mountain.getPosition().equals(position)){
result.add(ModelElement.MOUNTAIN);
}
}
for (Firefighter firefighter : firefighters)
if (firefighter.getPosition().equals(position))
result.add(ModelElement.FIREFIGHTER); result.add(ModelElement.FIREFIGHTER);
if (firePositions.contains(position))
if (fire.getFirePositions().contains(position))
result.add(ModelElement.FIRE); result.add(ModelElement.FIRE);
return result; return result;
} }
...@@ -75,23 +120,24 @@ public class FirefighterBoard implements Board<List<ModelElement>> { ...@@ -75,23 +120,24 @@ public class FirefighterBoard implements Board<List<ModelElement>> {
public List<Position> updateToNextGeneration() { public List<Position> updateToNextGeneration() {
List<Position> modifiedPositions = updateFirefighters(); List<Position> modifiedPositions = updateFirefighters();
modifiedPositions.addAll(updateFires());
step++;
return modifiedPositions;
}
private List<Position> updateFires() {
List<Position> modifiedPositions = new ArrayList<>();
if (step % 2 == 0){ if (step % 2 == 0){
List<Position> newFirePositions = new ArrayList<>(); modifiedPositions.addAll(fire.spreadFire(getMountainPositions()));
for (Position fire : firePositions) {
newFirePositions.addAll(neighbors.get(fire));
} }
firePositions.addAll(newFirePositions); for (Cloud cloud : clouds) {
modifiedPositions.addAll(newFirePositions); cloud.move();
cloud.protectFromFire(fire);
cloud.extinguishSurroundingFires(fire);
} }
return modifiedPositions; step++;
return modifiedPositions;
}
private Set<Position> getMountainPositions() {
Set<Position> mountainPositions = new HashSet<>();
for (Mountain mountain : mountains) {
mountainPositions.add(mountain.getPosition());
}
return mountainPositions;
} }
@Override @Override
...@@ -101,22 +147,27 @@ public class FirefighterBoard implements Board<List<ModelElement>> { ...@@ -101,22 +147,27 @@ public class FirefighterBoard implements Board<List<ModelElement>> {
private List<Position> updateFirefighters() { private List<Position> updateFirefighters() {
List<Position> modifiedPosition = new ArrayList<>(); List<Position> modifiedPosition = new ArrayList<>();
List<Position> firefighterNewPositions = new ArrayList<>(); for (Firefighter firefighter : firefighters) {
for (Position firefighterPosition : firefighterPositions) {
Position newFirefighterPosition = modifiedPosition.add(firefighter.getPosition());
targetStrategy.neighborClosestToFire(firefighterPosition,
firePositions, neighbors); Position newPosition = firefighter.moveToBestPosition(fire.getFirePositions(), neighbors, getMountainPositions());
firefighterNewPositions.add(newFirefighterPosition); firefighter.setPosition(newPosition);
extinguish(newFirefighterPosition);
modifiedPosition.add(firefighterPosition); modifiedPosition.add(newPosition);
modifiedPosition.add(newFirefighterPosition);
List<Position> neighborFirePositions = neighbors.get(newFirefighterPosition).stream() firefighter.extinguish(newPosition, fire.getFirePositions());
.filter(firePositions::contains).toList();
for (Position firePosition : neighborFirePositions) // Éteindre les feux dans les positions voisines
extinguish(firePosition); List<Position> adjacentFires = neighbors.get(newPosition).stream()
modifiedPosition.addAll(neighborFirePositions); .filter(fire.getFirePositions()::contains)
} .toList();
firefighterPositions = firefighterNewPositions; for (Position firePosition : adjacentFires) {
firefighter.extinguish(firePosition, fire.getFirePositions());
modifiedPosition.add(firePosition);
}
}
return modifiedPosition; return modifiedPosition;
} }
...@@ -126,21 +177,18 @@ public class FirefighterBoard implements Board<List<ModelElement>> { ...@@ -126,21 +177,18 @@ public class FirefighterBoard implements Board<List<ModelElement>> {
initializeElements(); initializeElements();
} }
private void extinguish(Position position) {
firePositions.remove(position);
}
@Override @Override
public void setState(List<ModelElement> state, Position position) { public void setState(List<ModelElement> state, Position position) {
firePositions.remove(position); fire.getFirePositions().remove(position);
for (; ; ) { firefighters.removeIf(f -> f.getPosition().equals(position));
if (!firefighterPositions.remove(position)) break; clouds.removeIf(c -> c.getPosition().equals(position));
}
for (ModelElement element : state) { for (ModelElement element : state) {
switch (element) { switch (element) {
case FIRE -> firePositions.add(position); case FIRE -> fire.getFirePositions().add(position);
case FIREFIGHTER -> firefighterPositions.add(position); case FIREFIGHTER -> firefighters.add(new Firefighter(position));
case CLOUD -> clouds.add(new Cloud(position, neighbors));
case MOUNTAIN -> mountains.add(new Mountain(position));
} }
} }
} }
......
package model; package model;
public enum ModelElement { public enum ModelElement {
FIREFIGHTER, FIRE FIREFIGHTER, FIRE, CLOUD, MOUNTAIN
} }
package model;
import util.Position;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
public class Mountain {
private final Position position;
public Mountain(Position position) {
this.position = position;
}
public Position getPosition(){
return position;
}
public static Set<Position> getMountainPositions(List<Mountain> mountains) {
return mountains.stream()
.map(Mountain::getPosition)
.collect(Collectors.toSet());
}
}
/*package model;
import util.Position;
import java.util.*;
public class FirefighterBoard implements Board<List<ModelElement>> {
private final int columnCount;
private final int rowCount;
private final int initialFireCount;
private final int initialFirefighterCount;
private final model.TargetStrategy targetStrategy = new model.TargetStrategy();
private List<Position> firefighterPositions;
private Set<Position> firePositions;
private Map<Position, List<Position>> neighbors = new HashMap();
private final Position[][] positions;
private int step = 0;
private final Random randomGenerator = new Random();
public FirefighterBoard(int columnCount, int rowCount, int initialFireCount, int initialFirefighterCount) {
this.columnCount = columnCount;
this.rowCount = rowCount;
this.positions = new Position[rowCount][columnCount];
for (int column = 0; column < columnCount; column++)
for (int row = 0; row < rowCount; row++)
positions[row][column] = new Position(row, column);
for (int column = 0; column < columnCount; column++)
for (int row = 0; row < rowCount; row++) {
List<Position> list = new ArrayList<>();
if (row > 0) list.add(positions[row - 1][column]);
if (column > 0) list.add(positions[row][column - 1]);
if (row < rowCount - 1) list.add(positions[row + 1][column]);
if (column < columnCount - 1) list.add(positions[row][column + 1]);
neighbors.put(positions[row][column], list);
}
this.initialFireCount = initialFireCount;
this.initialFirefighterCount = initialFirefighterCount;
initializeElements();
}
public void initializeElements() {
firefighterPositions = new ArrayList<>();
firePositions = new HashSet<>();
for (int index = 0; index < initialFireCount; index++)
firePositions.add(randomPosition());
for (int index = 0; index < initialFirefighterCount; index++)
firefighterPositions.add(randomPosition());
}
private Position randomPosition() {
return new Position(randomGenerator.nextInt(rowCount), randomGenerator.nextInt(columnCount));
}
@Override
public List<ModelElement> getState(Position position) {
List<ModelElement> result = new ArrayList<>();
for (Position firefighterPosition : firefighterPositions)
if (firefighterPosition.equals(position))
result.add(ModelElement.FIREFIGHTER);
if (firePositions.contains(position))
result.add(ModelElement.FIRE);
return result;
}
@Override
public int rowCount() {
return rowCount;
}
@Override
public int columnCount() {
return columnCount;
}
public List<Position> updateToNextGeneration() {
List<Position> modifiedPositions = updateFirefighters();
modifiedPositions.addAll(updateFires());
step++;
return modifiedPositions;
}
private List<Position> updateFires() {
List<Position> modifiedPositions = new ArrayList<>();
if (step % 2 == 0) {
List<Position> newFirePositions = new ArrayList<>();
for (Position fire : firePositions) {
newFirePositions.addAll(neighbors.get(fire));
}
firePositions.addAll(newFirePositions);
modifiedPositions.addAll(newFirePositions);
}
return modifiedPositions;
}
@Override
public int stepNumber() {
return step;
}
private List<Position> updateFirefighters() {
List<Position> modifiedPosition = new ArrayList<>();
List<Position> firefighterNewPositions = new ArrayList<>();
for (Position firefighterPosition : firefighterPositions) {
Position newFirefighterPosition =
targetStrategy.neighborClosestToFire(firefighterPosition,
firePositions, neighbors);
firefighterNewPositions.add(newFirefighterPosition);
extinguish(newFirefighterPosition);
modifiedPosition.add(firefighterPosition);
modifiedPosition.add(newFirefighterPosition);
List<Position> neighborFirePositions = neighbors.get(newFirefighterPosition).stream()
.filter(firePositions::contains).toList();
for (Position firePosition : neighborFirePositions)
extinguish(firePosition);
modifiedPosition.addAll(neighborFirePositions);
}
firefighterPositions = firefighterNewPositions;
return modifiedPosition;
}
@Override
public void reset() {
step = 0;
initializeElements();
}
private void extinguish(Position position) {
firePositions.remove(position);
}
@Override
public void setState(List<ModelElement> state, Position position) {
firePositions.remove(position);
for (; ; ) {
if (!firefighterPositions.remove(position)) break;
}
for (ModelElement element : state) {
switch (element) {
case FIRE -> firePositions.add(position);
case FIREFIGHTER -> firefighterPositions.add(position);
}
}
}
}*/
\ No newline at end of file
package model.update;
import model.Fire;
import util.Position;
import java.util.*;
public class FireUpdater {
private Fire fire;
public FireUpdater(Fire fire) {
this.fire = fire;
}
public List<Position> updateFire(Map<Position, List<Position>> neighbors, Set<Position> mountainPositions) {
return fire.spreadFire(mountainPositions);
}
}
package model.update;
import model.Fire;
import model.Firefighter;
import util.Position;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Set;
public class FirefighterUpdater {
private final List<Firefighter> firefighters;
private final Map<Position, List<Position>> neighbors;
private final Fire fire;
public FirefighterUpdater(List<Firefighter> firefighters, Map<Position, List<Position>> neighbors, Fire fire) {
this.firefighters = firefighters;
this.neighbors = neighbors;
this.fire = fire;
}
public List<Position> updateFirefighters(Set<Position> mountainPositions) {
List<Position> modifiedPositions = new ArrayList<>();
for (Firefighter firefighter : firefighters) {
modifiedPositions.add(firefighter.getPosition());
Position newPosition = firefighter.moveToBestPosition(fire.getFirePositions(), neighbors, mountainPositions);
firefighter.setPosition(newPosition);
modifiedPositions.add(newPosition);
firefighter.extinguish(newPosition, fire.getFirePositions());
// Éteindre les feux dans les positions voisines
List<Position> adjacentFires = neighbors.get(newPosition).stream()
.filter(fire.getFirePositions()::contains)
.toList();
for (Position firePosition : adjacentFires) {
firefighter.extinguish(firePosition, fire.getFirePositions());
modifiedPositions.add(firePosition);
}
}
return modifiedPositions;
}
}
package model.update;
import util.Position;
import java.util.HashMap;
import java.util.*;
public class NeighborManager {
private final Map<Position, List<Position>> neighbors = new HashMap<>();
public NeighborManager(int rowCount, int columnCount, Position[][] positions) {
for (int row = 0; row < rowCount; row++) {
for (int column = 0; column < columnCount; column++) {
List<Position> neighborList = new ArrayList<>();
if (row > 0) neighborList.add(positions[row - 1][column]);
if (column > 0) neighborList.add(positions[row][column - 1]);
if (row < rowCount - 1) neighborList.add(positions[row + 1][column]);
if (column < columnCount - 1) neighborList.add(positions[row][column + 1]);
neighbors.put(positions[row][column], neighborList);
}
}
}
public List<Position> getNeighbors(Position position) {
return neighbors.get(position);
}
}
...@@ -3,7 +3,7 @@ package view; ...@@ -3,7 +3,7 @@ package view;
import javafx.scene.paint.Color; import javafx.scene.paint.Color;
public enum ViewElement { public enum ViewElement {
FIREFIGHTER(Color.BLUE), FIRE(Color.RED), EMPTY(Color.WHITE); FIREFIGHTER(Color.BLUE), FIRE(Color.RED), CLOUD(Color.LIGHTGREY),MOUNTAIN(Color.CHOCOLATE), EMPTY(Color.WHITE);
final Color color; final Color color;
ViewElement(Color color) { ViewElement(Color color) {
this.color = color; this.color = color;
......
...@@ -10,17 +10,17 @@ import static org.assertj.core.api.Assertions.*; ...@@ -10,17 +10,17 @@ import static org.assertj.core.api.Assertions.*;
public class FirefighterBoardTest { public class FirefighterBoardTest {
@Test @Test
void testColumnCount(){ void testColumnCount(){
Board<List<ModelElement>> board = new FirefighterBoard(20, 10, 1, 3); Board<List<ModelElement>> board = new FirefighterBoard(20, 10, 1, 3, 3, 3);
assertThat(board.columnCount()).isEqualTo(20); assertThat(board.columnCount()).isEqualTo(20);
} }
@Test @Test
void testRowCount(){ void testRowCount(){
Board<List<ModelElement>> board = new FirefighterBoard(20, 10, 1, 3); Board<List<ModelElement>> board = new FirefighterBoard(20, 10, 3, 5, 3, 3);
assertThat(board.rowCount()).isEqualTo(10); assertThat(board.rowCount()).isEqualTo(10);
} }
@Test @Test
void testStepNumber(){ void testStepNumber(){
Board<List<ModelElement>> board = new FirefighterBoard(20, 10, 1, 3); Board<List<ModelElement>> board = new FirefighterBoard(20, 10, 3, 5, 3, 3);
for(int index = 0; index < 10; index++){ for(int index = 0; index < 10; index++){
assertThat(board.stepNumber()).isEqualTo(index); assertThat(board.stepNumber()).isEqualTo(index);
board.updateToNextGeneration(); board.updateToNextGeneration();
...@@ -29,7 +29,7 @@ public class FirefighterBoardTest { ...@@ -29,7 +29,7 @@ public class FirefighterBoardTest {
} }
@Test @Test
void testGetState_afterSet(){ void testGetState_afterSet(){
Board<List<ModelElement>> board = new FirefighterBoard(20, 10, 0, 0); Board<List<ModelElement>> board = new FirefighterBoard(20, 10, 0, 0, 0, 0);
Position position = new Position(1,2); Position position = new Position(1,2);
assertThat(board.getState(position)).isEmpty(); assertThat(board.getState(position)).isEmpty();
board.setState(List.of(ModelElement.FIRE), position); board.setState(List.of(ModelElement.FIRE), position);
......