From 15bcbac0b7f35bca41834e28f99bcb5476fcd8d5 Mon Sep 17 00:00:00 2001 From: Celia AREZKI <celia.arezki.1@etu.univ-amu.fr> Date: Sun, 17 Nov 2024 22:20:24 +0100 Subject: [PATCH] Modify the methode updateFires and updateFireFighters --- src/main/java/model/FireManager.java | 13 ++++++++++--- src/main/java/model/FirefighterBoard.java | 5 +++-- src/main/java/model/FirefighterManager.java | 14 ++++++++++---- 3 files changed, 23 insertions(+), 9 deletions(-) diff --git a/src/main/java/model/FireManager.java b/src/main/java/model/FireManager.java index 71d9659..0ffd5df 100644 --- a/src/main/java/model/FireManager.java +++ b/src/main/java/model/FireManager.java @@ -6,9 +6,12 @@ import java.util.*; public class FireManager implements FireBehavior, FireProperties{ private Set<Position> firePositions; + private FirefighterManager firefighterManager; - public FireManager(Set<Position> firePositions) { + public FireManager(Set<Position> firePositions,FirefighterManager firefighterManager) { this.firePositions = firePositions; + this.firefighterManager=firefighterManager; + } // Initialize fire positions randomly @@ -22,10 +25,11 @@ public class FireManager implements FireBehavior, FireProperties{ @Override public List<Position> updateFires(int step, Map<Position, List<Position>> neighbors) { List<Position> newFirePositions = new ArrayList<>(); - if (step % 2 == 0) { // Fires spread every other step + if (step % 2 == 0) { // Le feu se propage tous les deux pas for (Position fire : firePositions) { for (Position neighbor : neighbors.get(fire)) { - if (!firePositions.contains(neighbor)) { + // Vérifier si le voisin est déjà en feu ou s'il y a un pompier + if (!firePositions.contains(neighbor) && !firefighterManager.getFirefighterPositions().contains(neighbor)) { newFirePositions.add(neighbor); } } @@ -34,6 +38,8 @@ public class FireManager implements FireBehavior, FireProperties{ } return newFirePositions; } + + // Extinguish a fire at a specific position @Override public void extinguishFire(Position position) { @@ -47,4 +53,5 @@ public class FireManager implements FireBehavior, FireProperties{ @Override public Set<Position> getFirePosition() { return new HashSet<>(firePositions);} + } diff --git a/src/main/java/model/FirefighterBoard.java b/src/main/java/model/FirefighterBoard.java index 4f5681f..e195363 100644 --- a/src/main/java/model/FirefighterBoard.java +++ b/src/main/java/model/FirefighterBoard.java @@ -28,8 +28,9 @@ public class FirefighterBoard implements BoardBehavior<List<ModelElement>> ,Boa initializePositions(); initializeNeighbors(); // Initialize manager - this.fireManager = new FireManager(new HashSet<>()); - this.firefighterManager = new FirefighterManager(new ArrayList<>(), fireManager); + this.fireManager = new FireManager(new HashSet<>(),new FirefighterManager(new ArrayList<>())); + this.firefighterManager = new FirefighterManager(new ArrayList<>()); + this.firefighterManager.setFireManager(fireManager); initializeElements(); } diff --git a/src/main/java/model/FirefighterManager.java b/src/main/java/model/FirefighterManager.java index 3866183..9cce634 100644 --- a/src/main/java/model/FirefighterManager.java +++ b/src/main/java/model/FirefighterManager.java @@ -12,9 +12,12 @@ public class FirefighterManager implements FirefighterBehavior, FirefighterPrope private List<Position> firefighterPositions; FireManager fireManager; - public FirefighterManager(List<Position> firefighterPositions, FireManager fireManager) { + public void setFireManager(FireManager fireManager) { + this.fireManager = fireManager; + } + + public FirefighterManager(List<Position> firefighterPositions) { this.firefighterPositions = firefighterPositions; - this.fireManager=fireManager; } @Override @@ -48,8 +51,10 @@ public class FirefighterManager implements FirefighterBehavior, FirefighterPrope Position newFirefighterPosition = moveToTarget(firefighterPosition, fireManager.getFirePosition(), neighbors); setFirefighterPosition(firefighterPosition, newFirefighterPosition); - // Extinction du feu - extinguishFire(newFirefighterPosition); + // Vérifier si un feu est à la nouvelle position et l'éteindre + if (fireManager.isOnFire(newFirefighterPosition)) { + extinguishFire(newFirefighterPosition); + } modifiedPositions.add(firefighterPosition); modifiedPositions.add(newFirefighterPosition); @@ -57,4 +62,5 @@ public class FirefighterManager implements FirefighterBehavior, FirefighterPrope return modifiedPositions; } + } -- GitLab