From 01c34783aee23b7a57b990231211ec29b3219fd1 Mon Sep 17 00:00:00 2001 From: ousseyn01 <ousseyn.ndiaye9@gmail.com> Date: Wed, 27 Nov 2024 13:10:06 +0100 Subject: [PATCH] Modification of Cloud because fire could delete Cloud --- src/main/java/model/Cloud.java | 27 +++++++++-------------- src/main/java/model/FirefighterBoard.java | 4 +++- 2 files changed, 14 insertions(+), 17 deletions(-) diff --git a/src/main/java/model/Cloud.java b/src/main/java/model/Cloud.java index 6e33768..208894d 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 e684c39..7aef60a 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++; -- GitLab