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

Modification of Cloud because fire could delete Cloud

parent b40b3c19
No related branches found
No related tags found
No related merge requests found
...@@ -14,32 +14,27 @@ public class Cloud { ...@@ -14,32 +14,27 @@ public class Cloud {
this.neighbors = neighbors; this.neighbors = neighbors;
} }
// Déplacement du nuage d'une case aléatoire parmi ses voisins // Déplacement aléatoire du nuage
public void move(Fire fire, Set<Position> mountains) { public void move() {
List<Position> validNeighbors = neighbors.get(position).stream() List<Position> validNeighbors = neighbors.get(position);
.filter(neighbor -> !mountains.contains(neighbor)) // Exclure les montagnes
.toList();
if (!validNeighbors.isEmpty()) { if (!validNeighbors.isEmpty()) {
this.position = validNeighbors.get(randomGenerator.nextInt(validNeighbors.size())); this.position = validNeighbors.get(randomGenerator.nextInt(validNeighbors.size()));
} }
// Éteindre les feux après déplacement
extinguishFires(fire);
} }
// Éteint les feux sur la position du nuage et ses voisins // Éteindre les feux dans les cases adjacentes
private void extinguishFires(Fire fire) { public void extinguishSurroundingFires(Fire fire) {
// Éteindre le feu à la position actuelle
fire.extinguishFire(position);
// Éteindre les feux voisins
for (Position neighbor : neighbors.get(position)) { for (Position neighbor : neighbors.get(position)) {
fire.extinguishFire(neighbor); fire.extinguishFire(neighbor); // Éteint les feux adjacents
} }
} }
public Position getPosition() { public Position getPosition() {
return position; return position;
} }
// Les nuages ne peuvent pas être supprimés par le feu
public void protectFromFire(Fire fire) {
fire.getFirePositions().remove(position);
}
} }
...@@ -127,7 +127,9 @@ public class FirefighterBoard implements Board<List<ModelElement>> { ...@@ -127,7 +127,9 @@ public class FirefighterBoard implements Board<List<ModelElement>> {
for (Cloud cloud : clouds) { for (Cloud cloud : clouds) {
//cloud.moveAndExtinguishFire(fire); //cloud.moveAndExtinguishFire(fire);
//cloud.extinguishFireCloud(fire); //cloud.extinguishFireCloud(fire);
cloud.move(fire, getMountainPositions()); cloud.move();
cloud.protectFromFire(fire);
cloud.extinguishSurroundingFires(fire);
} }
step++; step++;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment