Skip to content
Snippets Groups Projects
Commit ddc52714 authored by ousseyn01's avatar ousseyn01
Browse files

Modify FirefighterBoard for Cloud fonctionnallity

parent ce4d0dbc
No related branches found
No related tags found
No related merge requests found
......@@ -9,15 +9,17 @@ public class FirefighterBoard implements Board<List<ModelElement>> {
private final int rowCount;
private final int initialFireCount;
private final int initialFirefighterCount;
private final int initialCloudCount;
private final model.TargetStrategy targetStrategy = new model.TargetStrategy();
private List<Firefighter> firefighters;
private Fire fire;
private final Map<Position, List<Position>> neighbors = new HashMap<>();
private List<Cloud> clouds;
private final Position[][] positions;
private int step = 0;
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) {
this.columnCount = columnCount;
this.rowCount = rowCount;
this.positions = new Position[rowCount][columnCount];
......@@ -35,17 +37,25 @@ public class FirefighterBoard implements Board<List<ModelElement>> {
}
this.initialFireCount = initialFireCount;
this.initialFirefighterCount = initialFirefighterCount;
this.initialCloudCount = initialCloudCount;
initializeElements();
}
public void initializeElements() {
firefighters = new ArrayList<>();
clouds = 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++)
firePositions.add(randomPosition());
fire = new Fire(firePositions, neighbors);
for (int index = 0; index < initialFirefighterCount; index++)
firefighters.add(new Firefighter(randomPosition()));
for (int index = 0; index < initialCloudCount; index++) {
clouds.add(new Cloud(randomPosition(), neighbors));
}
}
private Position randomPosition() {
......@@ -58,6 +68,11 @@ public class FirefighterBoard implements Board<List<ModelElement>> {
for (Firefighter firefighter : firefighters)
if (firefighter.getPosition().equals(position))
result.add(ModelElement.FIREFIGHTER);
for (Cloud cloud : clouds) {
if (cloud.getPosition().equals(position)) {
result.add(ModelElement.CLOUD);
}
}
if (fire.getFirePositions().contains(position))
result.add(ModelElement.FIRE);
return result;
......@@ -78,6 +93,11 @@ public class FirefighterBoard implements Board<List<ModelElement>> {
if (step % 2 == 0){
modifiedPositions.addAll(fire.spreadFire());
}
// Déplacer les nuages et éteindre les feux
for (Cloud cloud : clouds) {
cloud.moveRandomly();
cloud.extinguishFire(fire);
}
step++;
return modifiedPositions;
......@@ -128,6 +148,8 @@ public class FirefighterBoard implements Board<List<ModelElement>> {
switch (element) {
case FIRE -> fire.getFirePositions().add(position);
case FIREFIGHTER -> firefighters.add(new Firefighter(position));
case CLOUD -> clouds.add(new Cloud(position, neighbors));
}
}
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment