From b40b3c195ab89553edc7b6e4efa84c1e792a57bf Mon Sep 17 00:00:00 2001 From: ousseyn01 <ousseyn.ndiaye9@gmail.com> Date: Wed, 27 Nov 2024 11:44:00 +0100 Subject: [PATCH] Modification of Cloud because it not works correctly We change methods and implements other methods --- src/main/java/model/Cloud.java | 37 +++++++++++------------ src/main/java/model/FirefighterBoard.java | 5 +-- 2 files changed, 21 insertions(+), 21 deletions(-) diff --git a/src/main/java/model/Cloud.java b/src/main/java/model/Cloud.java index 99620fd..6e33768 100644 --- a/src/main/java/model/Cloud.java +++ b/src/main/java/model/Cloud.java @@ -3,7 +3,6 @@ package model; import util.Position; import java.util.*; -import java.util.Map; public class Cloud { private Position position; @@ -15,32 +14,32 @@ public class Cloud { this.neighbors = neighbors; } - public void moveAndExtinguishFire(Fire fire) { - Position newPosition = moveToNewPosition(); - this.position = newPosition; + // 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(); - extinguishNeighboringFires(fire); - } + if (!validNeighbors.isEmpty()) { + this.position = validNeighbors.get(randomGenerator.nextInt(validNeighbors.size())); + } - private Position moveToNewPosition() { - List<Position> neighborsList = neighbors.get(position); - return neighborsList.get((int) (Math.random() * neighborsList.size())); + // Éteindre les feux après déplacement + extinguishFires(fire); } - private void extinguishNeighboringFires(Fire fire) { - List<Position> neighboringPositions = neighbors.get(position); - for (Position neighbor : neighboringPositions) { - if (fire.getFirePositions().contains(neighbor)) { - fire.extinguishFire(neighbor); - } + // É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 + for (Position neighbor : neighbors.get(position)) { + fire.extinguishFire(neighbor); } } public Position getPosition() { return position; } - - public void extinguishFireCloud(Fire fire) { - fire.getFirePositions().remove(position); - } } diff --git a/src/main/java/model/FirefighterBoard.java b/src/main/java/model/FirefighterBoard.java index e6849c6..e684c39 100644 --- a/src/main/java/model/FirefighterBoard.java +++ b/src/main/java/model/FirefighterBoard.java @@ -125,8 +125,9 @@ public class FirefighterBoard implements Board<List<ModelElement>> { } // Déplacer les nuages et éteindre les feux for (Cloud cloud : clouds) { - cloud.moveAndExtinguishFire(fire); - cloud.extinguishFireCloud(fire); + //cloud.moveAndExtinguishFire(fire); + //cloud.extinguishFireCloud(fire); + cloud.move(fire, getMountainPositions()); } step++; -- GitLab