From ba0e18b9b111653ce7b48ef954172de29e929dbb Mon Sep 17 00:00:00 2001 From: Celia AREZKI <celia.arezki.1@etu.univ-amu.fr> Date: Sun, 17 Nov 2024 20:59:01 +0100 Subject: [PATCH] FirefighterManager : add the methode updateFireFighters --- src/main/java/model/FirefighterBehavior.java | 1 + src/main/java/model/FirefighterBoard.java | 6 +++--- src/main/java/model/FirefighterManager.java | 20 ++++++++++++++++++++ 3 files changed, 24 insertions(+), 3 deletions(-) diff --git a/src/main/java/model/FirefighterBehavior.java b/src/main/java/model/FirefighterBehavior.java index 64b515a..e00287d 100644 --- a/src/main/java/model/FirefighterBehavior.java +++ b/src/main/java/model/FirefighterBehavior.java @@ -10,4 +10,5 @@ public interface FirefighterBehavior { Position moveToTarget(Position currentPosition, Collection<Position> firePositions, Map<Position, List<Position>> neighbors); // Déplacer un pompier vers une cible. void extinguishFire(Position firePosition); // Éteindre un feu à une position donnée. + public List<Position> updateFirefighters(int step, Map<Position, List<Position>> neighbors) } diff --git a/src/main/java/model/FirefighterBoard.java b/src/main/java/model/FirefighterBoard.java index bf5d053..efc1d04 100644 --- a/src/main/java/model/FirefighterBoard.java +++ b/src/main/java/model/FirefighterBoard.java @@ -96,12 +96,12 @@ public class FirefighterBoard implements Board<List<ModelElement>> { return columnCount; } - public List<Position> updateToNextGeneration() { + /*public List<Position> updateToNextGeneration() { List<Position> modifiedPositions = updateFirefighters(); modifiedPositions.addAll(updateFires()); step++; return modifiedPositions; - } + }*/ private List<Position> updateFires() { return fireManager.updateFires(step,neighbors); @@ -113,7 +113,7 @@ public class FirefighterBoard implements Board<List<ModelElement>> { return step; } - /* private List<Position> updateFirefighters() { + /*private List<Position> updateFirefighters() { List<Position> modifiedPosition = new ArrayList<>(); List<Position> firefighterNewPositions = new ArrayList<>(); for (Position firefighterPosition : firefighterPositions) { diff --git a/src/main/java/model/FirefighterManager.java b/src/main/java/model/FirefighterManager.java index e141d20..3866183 100644 --- a/src/main/java/model/FirefighterManager.java +++ b/src/main/java/model/FirefighterManager.java @@ -3,6 +3,7 @@ package model; import util.Position; import util.TargetStrategy; +import java.util.ArrayList; import java.util.Collection; import java.util.List; import java.util.Map; @@ -37,4 +38,23 @@ public class FirefighterManager implements FirefighterBehavior, FirefighterPrope firefighterPositions.remove(oldPosition); firefighterPositions.add(newPosition); } + @Override + public List<Position> updateFirefighters(int step, Map<Position, List<Position>> neighbors) { + List<Position> modifiedPositions = new ArrayList<>(); + List<Position> firefighterPositionsCopy = new ArrayList<>(firefighterPositions); + + for (Position firefighterPosition : firefighterPositionsCopy) { + // Déplacement des pompiers + Position newFirefighterPosition = moveToTarget(firefighterPosition, fireManager.getFirePosition(), neighbors); + setFirefighterPosition(firefighterPosition, newFirefighterPosition); + + // Extinction du feu + extinguishFire(newFirefighterPosition); + + modifiedPositions.add(firefighterPosition); + modifiedPositions.add(newFirefighterPosition); + } + + return modifiedPositions; + } } -- GitLab