From bf40c3492df9839be4906ba3bd8de74cec8b57f8 Mon Sep 17 00:00:00 2001 From: Celia AREZKI <celia.arezki.1@etu.univ-amu.fr> Date: Thu, 21 Nov 2024 21:50:41 +0100 Subject: [PATCH] ClassicFireFighter : complete the methode updateFirefighters --- src/main/java/model/ClassicFireFighter.java | 18 ++++++++++++++ src/main/java/model/FirefighterBehavior.java | 2 +- src/main/java/model/FirefighterBoard.java | 10 ++++---- src/main/java/model/FirefighterManager.java | 25 +++----------------- 4 files changed, 27 insertions(+), 28 deletions(-) diff --git a/src/main/java/model/ClassicFireFighter.java b/src/main/java/model/ClassicFireFighter.java index a171e3d..13fefbe 100644 --- a/src/main/java/model/ClassicFireFighter.java +++ b/src/main/java/model/ClassicFireFighter.java @@ -2,10 +2,28 @@ package model; import util.Position; +import java.util.ArrayList; import java.util.List; +import java.util.Map; public class ClassicFireFighter extends FirefighterManager{ public ClassicFireFighter(List<Position> firefighterPositions) { super(firefighterPositions); } + @Override + public List<Position> updateFirefighters(int step, Map<Position, List<Position>> neighbors) { + List<Position> modifiedPositions = new ArrayList<>(); + for (Position firefighterPosition : firefighterPositions) { + Position newFirefighterPosition = moveToTarget(firefighterPosition, fireManager.getFirePosition(), neighbors); + setFirefighterPosition(firefighterPosition, newFirefighterPosition); + + if (fireManager.isOnFire(newFirefighterPosition)) { + extinguishFire(newFirefighterPosition); + } + + modifiedPositions.add(firefighterPosition); + modifiedPositions.add(newFirefighterPosition); + } + return modifiedPositions; + } } diff --git a/src/main/java/model/FirefighterBehavior.java b/src/main/java/model/FirefighterBehavior.java index 708ceb5..89773dc 100644 --- a/src/main/java/model/FirefighterBehavior.java +++ b/src/main/java/model/FirefighterBehavior.java @@ -10,5 +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); + // 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 e195363..213e9ac 100644 --- a/src/main/java/model/FirefighterBoard.java +++ b/src/main/java/model/FirefighterBoard.java @@ -11,8 +11,8 @@ public class FirefighterBoard implements BoardBehavior<List<ModelElement>> ,Boa private final int initialFireCount; private final int initialFirefighterCount; - private final FireManager fireManager; - private final FirefighterManager firefighterManager; + private FireManager fireManager; + private FirefighterManager firefighterManager; private final Position[][] positions; private int step = 0; @@ -28,9 +28,9 @@ public class FirefighterBoard implements BoardBehavior<List<ModelElement>> ,Boa initializePositions(); initializeNeighbors(); // Initialize manager - this.fireManager = new FireManager(new HashSet<>(),new FirefighterManager(new ArrayList<>())); - this.firefighterManager = new FirefighterManager(new ArrayList<>()); - this.firefighterManager.setFireManager(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 9cce634..1317bb1 100644 --- a/src/main/java/model/FirefighterManager.java +++ b/src/main/java/model/FirefighterManager.java @@ -8,8 +8,8 @@ import java.util.Collection; import java.util.List; import java.util.Map; -public class FirefighterManager implements FirefighterBehavior, FirefighterProperties { - private List<Position> firefighterPositions; +public abstract class FirefighterManager implements FirefighterBehavior, FirefighterProperties { + protected List<Position> firefighterPositions; FireManager fireManager; public void setFireManager(FireManager fireManager) { @@ -41,26 +41,7 @@ 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); - - // Vérifier si un feu est à la nouvelle position et l'éteindre - if (fireManager.isOnFire(newFirefighterPosition)) { - extinguishFire(newFirefighterPosition); - } - modifiedPositions.add(firefighterPosition); - modifiedPositions.add(newFirefighterPosition); - } - - return modifiedPositions; - } + public abstract List<Position> updateFirefighters(int step, Map<Position, List<Position>> neighbors) ; } -- GitLab