diff --git a/src/main/java/model/ClassicFireFighter.java b/src/main/java/model/ClassicFireFighter.java index a171e3d4e4b6c3d8d42089e2d4a86c9313d8d9c3..13fefbecb116637cb28375a542138efd742ebf6f 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 708ceb5026feb5223dff70e51f1cdce27e00f30b..89773dcfad96ff72878698e316b9b92c4b3fa22b 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 e195363c0514ffa0d356b8c86120b26b6a8d0d60..213e9ac26b8202c8ef65a55c2ef94c601a56b2a6 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 9cce634954552be7201fb2588e66122872ec5e49..1317bb1cbd7b025e0a223383dec11810c718968f 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) ; }