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

Implementation of Mountain in fighfighterboard

parent 6e4fddf6
Branches
No related tags found
No related merge requests found
......@@ -10,16 +10,18 @@ public class FirefighterBoard implements Board<List<ModelElement>> {
private final int initialFireCount;
private final int initialFirefighterCount;
private final int initialCloudCount;
private final int initialMountainCount = 3;
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 List<Mountain> mountains;
private final Position[][] positions;
private int step = 0;
private final Random randomGenerator = new Random();
public FirefighterBoard(int columnCount, int rowCount, int initialFireCount, int initialFirefighterCount, int initialCloudCount) {
public FirefighterBoard(int columnCount, int rowCount, int initialFireCount, int initialFirefighterCount, int initialCloudCount, int initialMountainCount) {
this.columnCount = columnCount;
this.rowCount = rowCount;
this.positions = new Position[rowCount][columnCount];
......@@ -44,6 +46,7 @@ public class FirefighterBoard implements Board<List<ModelElement>> {
public void initializeElements() {
firefighters = new ArrayList<>();
clouds = new ArrayList<>();
mountains = new ArrayList<>();
Set<Position> firePositions = new HashSet<>();
for (int index = 0; index < initialCloudCount; index++) {
clouds.add(new Cloud(randomPosition(), neighbors));
......@@ -56,6 +59,26 @@ public class FirefighterBoard implements Board<List<ModelElement>> {
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() {
......@@ -70,6 +93,11 @@ public class FirefighterBoard implements Board<List<ModelElement>> {
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))
......@@ -97,12 +125,8 @@ public class FirefighterBoard implements Board<List<ModelElement>> {
}
// Déplacer les nuages et éteindre les feux
for (Cloud cloud : clouds) {
//cloud.moveRandomly();
//cloud.extinguishFire(fire);
cloud.moveAndExtinguishFire(fire);
cloud.extinguishFireCloud(fire);
//modifiedPositions.addAll(fire.spreadFire());
}
step++;
......@@ -157,6 +181,7 @@ public class FirefighterBoard implements Board<List<ModelElement>> {
case FIRE -> fire.getFirePositions().add(position);
case FIREFIGHTER -> firefighters.add(new Firefighter(position));
case CLOUD -> clouds.add(new Cloud(position, neighbors));
case MOUNTAIN -> mountains.add(new Mountain(position));
}
}
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment