diff --git a/src/main/java/model/Cloud.java b/src/main/java/model/Cloud.java index 6e33768d746076da1fd701e80f8434dbb4bf178b..208894d573b35219c504240683bfec453883afbe 100644 --- a/src/main/java/model/Cloud.java +++ b/src/main/java/model/Cloud.java @@ -14,32 +14,27 @@ public class Cloud { this.neighbors = neighbors; } - // Déplacement du nuage d'une case aléatoire parmi ses voisins - public void move(Fire fire, Set<Position> mountains) { - List<Position> validNeighbors = neighbors.get(position).stream() - .filter(neighbor -> !mountains.contains(neighbor)) // Exclure les montagnes - .toList(); - + // Déplacement aléatoire du nuage + public void move() { + List<Position> validNeighbors = neighbors.get(position); if (!validNeighbors.isEmpty()) { 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 - private void extinguishFires(Fire fire) { - // Éteindre le feu à la position actuelle - fire.extinguishFire(position); - - // Éteindre les feux voisins + // Éteindre les feux dans les cases adjacentes + public void extinguishSurroundingFires(Fire fire) { for (Position neighbor : neighbors.get(position)) { - fire.extinguishFire(neighbor); + fire.extinguishFire(neighbor); // Éteint les feux adjacents } } public Position getPosition() { return position; } + + // Les nuages ne peuvent pas être supprimés par le feu + public void protectFromFire(Fire fire) { + fire.getFirePositions().remove(position); + } } diff --git a/src/main/java/model/FirefighterBoard.java b/src/main/java/model/FirefighterBoard.java index e684c39bf542508cae5b48f16d81544c00218f48..7aef60a278a6aef1625fdcf2a0e600aea233dcf3 100644 --- a/src/main/java/model/FirefighterBoard.java +++ b/src/main/java/model/FirefighterBoard.java @@ -127,7 +127,9 @@ public class FirefighterBoard implements Board<List<ModelElement>> { for (Cloud cloud : clouds) { //cloud.moveAndExtinguishFire(fire); //cloud.extinguishFireCloud(fire); - cloud.move(fire, getMountainPositions()); + cloud.move(); + cloud.protectFromFire(fire); + cloud.extinguishSurroundingFires(fire); } step++;