diff --git a/.gradle/8.10.2/executionHistory/executionHistory.bin b/.gradle/8.10.2/executionHistory/executionHistory.bin index 0d10cd15e6aa1d0ba21cc348a2fb3c9faf15cd82..459f04112a97c216770827ed0a626f1ff39e9127 100644 Binary files a/.gradle/8.10.2/executionHistory/executionHistory.bin and b/.gradle/8.10.2/executionHistory/executionHistory.bin differ diff --git a/.gradle/8.10.2/executionHistory/executionHistory.lock b/.gradle/8.10.2/executionHistory/executionHistory.lock index dc9b958a69a79966bb17ff7689c9022c15f91339..e2e0af4615507a280641a02a551948f25839bfd4 100644 Binary files a/.gradle/8.10.2/executionHistory/executionHistory.lock and b/.gradle/8.10.2/executionHistory/executionHistory.lock differ diff --git a/.gradle/8.10.2/fileHashes/fileHashes.bin b/.gradle/8.10.2/fileHashes/fileHashes.bin index 87310951124d22132928c8af855e06a950b81eed..8b9850dbfcb79c223a9b6935bf38eb34a22633ca 100644 Binary files a/.gradle/8.10.2/fileHashes/fileHashes.bin and b/.gradle/8.10.2/fileHashes/fileHashes.bin differ diff --git a/.gradle/8.10.2/fileHashes/fileHashes.lock b/.gradle/8.10.2/fileHashes/fileHashes.lock index 20309a5ed04d71b4ec90a70520da51a1b0d06329..404b97867be6a0741d90503283928ce3074d4a4c 100644 Binary files a/.gradle/8.10.2/fileHashes/fileHashes.lock and b/.gradle/8.10.2/fileHashes/fileHashes.lock differ diff --git a/.gradle/8.10.2/fileHashes/resourceHashesCache.bin b/.gradle/8.10.2/fileHashes/resourceHashesCache.bin index 475ab9df139928ba57d62937f467bbeed2e56065..8cbc23810fcce9a52779d9e11a796b0fbf43d578 100644 Binary files a/.gradle/8.10.2/fileHashes/resourceHashesCache.bin and b/.gradle/8.10.2/fileHashes/resourceHashesCache.bin differ diff --git a/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/.gradle/buildOutputCleanup/buildOutputCleanup.lock index 3ee9cf49c8538b4e500bb8adaf6d780e784aebb4..2ee3535aaefb3d8d72961472cca76fcfb5d51700 100644 Binary files a/.gradle/buildOutputCleanup/buildOutputCleanup.lock and b/.gradle/buildOutputCleanup/buildOutputCleanup.lock differ diff --git a/build/classes/java/main/app/SimulatorApplication.class b/build/classes/java/main/app/SimulatorApplication.class index 8c667bcd48cc45a2d2c6b4306ef0f234f61bce68..74b875251a0cde725bd7e353d53f8ef10d36b6c1 100644 Binary files a/build/classes/java/main/app/SimulatorApplication.class and b/build/classes/java/main/app/SimulatorApplication.class differ diff --git a/build/classes/java/main/app/SimulatorMain.class b/build/classes/java/main/app/SimulatorMain.class index 1d13229f73ef27c233a432bc89aa3dffc086246a..4530cc2971636d0c78bcf91139a4f699c2f20eb4 100644 Binary files a/build/classes/java/main/app/SimulatorMain.class and b/build/classes/java/main/app/SimulatorMain.class differ diff --git a/build/classes/java/main/controller/Controller.class b/build/classes/java/main/controller/Controller.class index 5a96d3a3c13b10ed04af9a938a84854c793dd986..f89eb335ede47088370d807266be9cbff8011b7f 100644 Binary files a/build/classes/java/main/controller/Controller.class and b/build/classes/java/main/controller/Controller.class differ diff --git a/build/classes/java/main/module-info.class b/build/classes/java/main/module-info.class index a05e120336680c15a80138be7c30617ca4e5473c..7a769b70875d147512dd0dc3f725d1c113981548 100644 Binary files a/build/classes/java/main/module-info.class and b/build/classes/java/main/module-info.class differ diff --git a/build/classes/java/main/view/Grid.class b/build/classes/java/main/view/Grid.class index c4fa5e96b46909e2a89e512f2ad9c2d4d042260c..3d42b97050079349780725b186452a4ef88502d2 100644 Binary files a/build/classes/java/main/view/Grid.class and b/build/classes/java/main/view/Grid.class differ diff --git a/build/classes/java/main/view/ViewElement.class b/build/classes/java/main/view/ViewElement.class index 1e8628999cc6101c22f3f65568027fa8214a343a..8047aa8366eef1bb8ec486a30882d7f0e9354ea1 100644 Binary files a/build/classes/java/main/view/ViewElement.class and b/build/classes/java/main/view/ViewElement.class differ diff --git a/src/main/java/controller/Controller.java b/src/main/java/controller/Controller.java index 053ab13663322761d27a3b2c4bd767b0072ecf0e..f0e6499860d6f47d33ce6f8a1f88ccc6d3a0649a 100644 --- a/src/main/java/controller/Controller.java +++ b/src/main/java/controller/Controller.java @@ -15,6 +15,7 @@ import javafx.util.Pair; import model.*; import model.Board.FirefighterBoard; import model.ExtinguishFire.Cloud; +import model.ExtinguishFire.DefaultFireFighter; import model.ExtinguishFire.FireFighter; import model.ExtinguishFire.MotorizedFireFighter; import model.Obstacle.Mountain; @@ -88,7 +89,7 @@ public class Controller { } private ViewElement getViewElement(List<ModelElement> squareState) { for (ModelElement element : squareState) { - if (element instanceof FireFighter) { + if (element instanceof DefaultFireFighter) { return ViewElement.FIREFIGHTER; } if (element instanceof Fire) { diff --git a/src/main/java/model/Board/BoardFireFighterBehavior.java b/src/main/java/model/Board/BoardFireFighterBehavior.java index 9a88252ccec27bfd6eb96722d7db118b9a5b5e98..5da4396f605948672145fbc8c0c6016f19c14433 100644 --- a/src/main/java/model/Board/BoardFireFighterBehavior.java +++ b/src/main/java/model/Board/BoardFireFighterBehavior.java @@ -1,12 +1,15 @@ package model.Board; -import model.*; + +import model.ElementFactory; +import model.ElementGenerator; import model.ExtinguishFire.*; import model.Obstacle.MountainGenerator; import model.Obstacle.Road; import model.Obstacle.Terrain; +import model.StrategyElement; import model.flammable.Fire; -import model.flammable.FireStrategy; +import model.flammable.FireStrategyElement; import model.flammable.Rocky; import util.Position; import util.TargetStrategy; @@ -24,30 +27,30 @@ public class BoardFireFighterBehavior implements BoardBehavior { private ElementFactory<Rocky> rockyFactory; private static Map<Position, Terrain> terrainMap = new HashMap<>(); private static int step; - static Strategy fireStrategy; - static Strategy fireFighterStrategy; - static Strategy cloudStrategy; - static Strategy motorizedStrategy; + static StrategyElement fireStrategyElement; + static StrategyElement fireFighterStrategyElement; + static StrategyElement cloudStrategyElement; + static StrategyElement motorizedStrategyElement; private ElementGenerator moutainGenerator; - public BoardFireFighterBehavior(Map<Position, List<Position>> neighbors, ElementFactory<Fire> fireFactory , ElementFactory<FireFighter> firefighterFactory, + public BoardFireFighterBehavior(Map<Position, List<Position>> neighbors, ElementFactory<Fire> fireFactory , ElementFactory<DefaultFireFighter> firefighterFactory, ElementFactory<Cloud> cloudFactory, ElementFactory<MotorizedFireFighter> motorizedFactory, ElementFactory<Rocky> rockyFactory) { this.step=0; this.neighbors = neighbors; this.rockyFactory=rockyFactory; - fireStrategy =new FireStrategy(fireFactory); - fireFighterStrategy =new FireFighterStrategy(firefighterFactory); - cloudStrategy =new CloudStrategy(cloudFactory); - motorizedStrategy =new MotorizedStrategy(motorizedFactory); + fireStrategyElement =new FireStrategyElement(fireFactory); + fireFighterStrategyElement =new FireFighterStrategyElement(firefighterFactory); + cloudStrategyElement =new CloudStrategyElement(cloudFactory); + motorizedStrategyElement =new MotorizedStrategyElement(motorizedFactory); moutainGenerator=new MountainGenerator(); } public void initializeElements(int rowCount, int columnCount) { - fireStrategy.initializeElement(rowCount,columnCount); - fireFighterStrategy.initializeElement(rowCount,columnCount); - cloudStrategy.initializeElement(rowCount,columnCount); + fireStrategyElement.initializeElement(rowCount,columnCount); + fireFighterStrategyElement.initializeElement(rowCount,columnCount); + cloudStrategyElement.initializeElement(rowCount,columnCount); // Pompiers motorisés - motorizedStrategy.initializeElement(rowCount,columnCount); + motorizedStrategyElement.initializeElement(rowCount,columnCount); // Rocky rocky = new ArrayList<>(); List<Rocky> rockies = rockyFactory.createElements(rowCount, columnCount); @@ -65,7 +68,7 @@ public class BoardFireFighterBehavior implements BoardBehavior { public static void extinguish(Position position) { - fireStrategy.getPositions().remove(position); + fireStrategyElement.getPositions().remove(position); @@ -74,7 +77,7 @@ public class BoardFireFighterBehavior implements BoardBehavior { public Set<Position> getFirePositions() { - return (Set<Position>) fireStrategy.getPositions(); + return (Set<Position>) fireStrategyElement.getPositions(); } @@ -91,10 +94,10 @@ public class BoardFireFighterBehavior implements BoardBehavior { @Override public List<Position> updateToNextGeneration() { - List<Position> modifiedPositions = fireFighterStrategy.updateElements(); - modifiedPositions.addAll(fireStrategy.updateElements()); - modifiedPositions.addAll(cloudStrategy.updateElements()); - modifiedPositions.addAll(motorizedStrategy.updateElements()); + List<Position> modifiedPositions = fireFighterStrategyElement.updateElements(); + modifiedPositions.addAll(fireStrategyElement.updateElements()); + modifiedPositions.addAll(cloudStrategyElement.updateElements()); + modifiedPositions.addAll(motorizedStrategyElement.updateElements()); incrementStep(); return modifiedPositions; } @@ -103,10 +106,10 @@ public class BoardFireFighterBehavior implements BoardBehavior { public void reset() { this.step=0; // Vider toutes les positions stockées - fireStrategy.getPositions().clear(); - fireFighterStrategy.getPositions().clear(); - cloudStrategy.getPositions().clear(); - motorizedStrategy.getPositions().clear(); + fireStrategyElement.getPositions().clear(); + fireFighterStrategyElement.getPositions().clear(); + cloudStrategyElement.getPositions().clear(); + motorizedStrategyElement.getPositions().clear(); rocky.clear(); terrainMap.clear(); @@ -123,10 +126,10 @@ public class BoardFireFighterBehavior implements BoardBehavior { public static void extinguishNearbyFires(Position firefighterPosition, List<Position> modifiedPositions) { List<Position> nearbyFires = getNeighbors().getOrDefault(firefighterPosition, Collections.emptyList()) .stream() - .filter(fireStrategy.getPositions()::contains) + .filter(fireStrategyElement.getPositions()::contains) .toList(); for (Position fire : nearbyFires) { - fireStrategy.getPositions().remove(fire); + fireStrategyElement.getPositions().remove(fire); modifiedPositions.add(fire); System.out.println("Feu éteint à : " + fire); } @@ -142,12 +145,12 @@ public class BoardFireFighterBehavior implements BoardBehavior { } // Si la position est occupée par un feu et que le terrain n'est pas traversable par le feu - if(cloudStrategy.getPositions().contains(position)) + if(cloudStrategyElement.getPositions().contains(position)) { return false; } // Si la position est une montagne, aucun élément ne peut la franchir sauf les nuages - if (terrainMap.get(position) != null && !cloudStrategy.getPositions().contains(position)) { + if (terrainMap.get(position) != null && !cloudStrategyElement.getPositions().contains(position)) { return false; // Impossible de franchir une montagne, sauf pour un nuage } if(rocky.contains(position)) @@ -231,18 +234,18 @@ public class BoardFireFighterBehavior implements BoardBehavior { public static Collection<Position> getFirefighterPositions() { - return fireFighterStrategy.getPositions(); + return fireFighterStrategyElement.getPositions(); } public Collection<Position> getCloudPositions() { - return cloudStrategy.getPositions(); + return cloudStrategyElement.getPositions(); } public List<Position> getMotorizedFighters() { - return (List<Position>) motorizedStrategy.getPositions(); + return (List<Position>) motorizedStrategyElement.getPositions(); } - public static Strategy getFireMovements() { - return fireStrategy; + public static StrategyElement getFireMovements() { + return fireStrategyElement; } } diff --git a/src/main/java/model/Board/FirefighterBoard.java b/src/main/java/model/Board/FirefighterBoard.java index f4d23f0ea695d53c7e753e776b395be1c9ae12f5..bde3e6353491da6d2d87073c805a8a00e674039b 100644 --- a/src/main/java/model/Board/FirefighterBoard.java +++ b/src/main/java/model/Board/FirefighterBoard.java @@ -1,7 +1,7 @@ package model.Board; -import model.*; import model.ExtinguishFire.*; +import model.ModelElement; import model.Obstacle.Mountain; import model.Obstacle.Road; import model.flammable.Fire; @@ -63,7 +63,7 @@ public class FirefighterBoard implements Board<List<ModelElement>> { // Filtrage des éléments Firefighter (en transformant les positions en objets FireFighter) behavior.getFirefighterPositions().stream() .filter(pos -> pos.isAtPosition(position)) // Vérifier si la position correspond - .forEach(pos -> result.add(new FireFighter(pos))); // Créer un objet Firefighter à partir de Position + .forEach(pos -> result.add(new DefaultFireFighter(pos))); // Créer un objet Firefighter à partir de Position // Filtrage des éléments Cloud behavior.getCloudPositions().stream() .filter(pos -> pos.isAtPosition(position)) @@ -104,7 +104,7 @@ public class FirefighterBoard implements Board<List<ModelElement>> { private void addElementToBoard(ModelElement element, Position position) { if (element instanceof Fire) { behavior.getFirePositions().add(position); // Ajouter un Fire - } else if (element instanceof FireFighter) { + } else if (element instanceof DefaultFireFighter) { behavior.getFirefighterPositions().add(position); // Ajouter un Firefighter } else if (element instanceof Cloud) { behavior.getCloudPositions().add(position); diff --git a/src/main/java/model/ExtinguishFire/CloudStrategy.java b/src/main/java/model/ExtinguishFire/CloudStrategyElement.java similarity index 94% rename from src/main/java/model/ExtinguishFire/CloudStrategy.java rename to src/main/java/model/ExtinguishFire/CloudStrategyElement.java index f65b43b66653115ec4056b74002895aa2e0f9fc1..be5f27271a7bf92dcbd8dd3def4c1549a1082f87 100644 --- a/src/main/java/model/ExtinguishFire/CloudStrategy.java +++ b/src/main/java/model/ExtinguishFire/CloudStrategyElement.java @@ -1,17 +1,17 @@ package model.ExtinguishFire; import model.ElementFactory; -import model.Strategy; +import model.StrategyElement; import util.Position; import java.util.*; import static model.Board.BoardFireFighterBehavior.*; -public class CloudStrategy implements Strategy { +public class CloudStrategyElement implements StrategyElement { private List<Position> cloudPositions; private final ElementFactory<Cloud> cloudFactory; - public CloudStrategy(ElementFactory<Cloud> cloudFactory) { + public CloudStrategyElement(ElementFactory<Cloud> cloudFactory) { this.cloudPositions = new ArrayList<>(); this.cloudFactory = cloudFactory; } diff --git a/src/main/java/model/ExtinguishFire/DefaultFireFighter.java b/src/main/java/model/ExtinguishFire/DefaultFireFighter.java index e6897faa776b6814d9c3586560735e6d24635977..e8e74d84ec0c2b0df0fd68fc737464bcc78bf3f2 100644 --- a/src/main/java/model/ExtinguishFire/DefaultFireFighter.java +++ b/src/main/java/model/ExtinguishFire/DefaultFireFighter.java @@ -1,4 +1,9 @@ package model.ExtinguishFire; -public class DefaultFireFighter { +import util.Position; + +public class DefaultFireFighter extends FireFighter{ + public DefaultFireFighter(Position position) { + super(position); + } } diff --git a/src/main/java/model/ExtinguishFire/FireFighterStrategy.java b/src/main/java/model/ExtinguishFire/FireFighterStrategyElement.java similarity index 89% rename from src/main/java/model/ExtinguishFire/FireFighterStrategy.java rename to src/main/java/model/ExtinguishFire/FireFighterStrategyElement.java index fd60dbe03bf551f1ff68536956b0f7893bd2b99e..18d7da361ab53caadb52f51b50568ccab0cb7b95 100644 --- a/src/main/java/model/ExtinguishFire/FireFighterStrategy.java +++ b/src/main/java/model/ExtinguishFire/FireFighterStrategyElement.java @@ -1,7 +1,7 @@ package model.ExtinguishFire; import model.ElementFactory; -import model.Strategy; +import model.StrategyElement; import util.Position; import java.util.ArrayList; @@ -11,10 +11,10 @@ import java.util.Set; import static model.Board.BoardFireFighterBehavior.*; -public class FireFighterStrategy implements Strategy { - private final ElementFactory<FireFighter> firefighterFactory; +public class FireFighterStrategyElement implements StrategyElement { + private final ElementFactory<DefaultFireFighter> firefighterFactory; private List<Position> firefighterPositions; - public FireFighterStrategy(ElementFactory<FireFighter> firefighterFactory) { + public FireFighterStrategyElement(ElementFactory<DefaultFireFighter> firefighterFactory) { this.firefighterFactory = firefighterFactory; this.firefighterPositions = new ArrayList<>(); } @@ -68,7 +68,7 @@ public class FireFighterStrategy implements Strategy { public void initializeElement(int rowCount, int columnCount) { // Pompiers firefighterPositions = new ArrayList<>(); - List<FireFighter> firefighters = firefighterFactory.createElements(rowCount, columnCount); + List<DefaultFireFighter> firefighters = firefighterFactory.createElements(rowCount, columnCount); for (FireFighter firefighter : firefighters) { firefighterPositions.add(firefighter.getPosition()); } diff --git a/src/main/java/model/ExtinguishFire/FirefighterFactory.java b/src/main/java/model/ExtinguishFire/FirefighterFactory.java index b45e236b24c34660e9c729a81a3aeca73d55c673..bf2fa18374b67ac0fb7fee1b642b041b21212c1c 100644 --- a/src/main/java/model/ExtinguishFire/FirefighterFactory.java +++ b/src/main/java/model/ExtinguishFire/FirefighterFactory.java @@ -8,7 +8,7 @@ import java.util.ArrayList; import java.util.List; import java.util.Random; -public class FirefighterFactory implements ElementFactory<FireFighter>, PositionGenerator { +public class FirefighterFactory implements ElementFactory<DefaultFireFighter>, PositionGenerator { private final Random random; private int count; @@ -18,11 +18,11 @@ public class FirefighterFactory implements ElementFactory<FireFighter>, Position } @Override - public List<FireFighter> createElements(int rowCount, int columnCount) { - List<FireFighter> firefighters = new ArrayList<>(); + public List<DefaultFireFighter> createElements(int rowCount, int columnCount) { + List<DefaultFireFighter> firefighters = new ArrayList<>(); for (int i = 0; i < count; i++) { Position randomPosition = generateRandomPosition(rowCount, columnCount); - firefighters.add(new FireFighter(randomPosition)); + firefighters.add(new DefaultFireFighter(randomPosition)); } return firefighters; } diff --git a/src/main/java/model/ExtinguishFire/MotorizedFireFighter.java b/src/main/java/model/ExtinguishFire/MotorizedFireFighter.java index 8c76873729bb388bcdef01cdc1de9abc72d9f9ed..44d094571e1edb7a46da9f1cf6ad93bdeed72861 100644 --- a/src/main/java/model/ExtinguishFire/MotorizedFireFighter.java +++ b/src/main/java/model/ExtinguishFire/MotorizedFireFighter.java @@ -6,7 +6,7 @@ import util.TargetStrategy; import java.util.*; -public class MotorizedFireFighter extends BoardElement { +public class MotorizedFireFighter extends FireFighter{ private final TargetStrategy targetStrategy = new TargetStrategy(); public MotorizedFireFighter(Position position) { super(position); diff --git a/src/main/java/model/ExtinguishFire/MotorizedStrategy.java b/src/main/java/model/ExtinguishFire/MotorizedStrategyElement.java similarity index 94% rename from src/main/java/model/ExtinguishFire/MotorizedStrategy.java rename to src/main/java/model/ExtinguishFire/MotorizedStrategyElement.java index 67e0dbf237b991deef710e260fc8cd070360e64f..167662bc02c693bb584927207d780f17ae3f7122 100644 --- a/src/main/java/model/ExtinguishFire/MotorizedStrategy.java +++ b/src/main/java/model/ExtinguishFire/MotorizedStrategyElement.java @@ -1,7 +1,7 @@ package model.ExtinguishFire; import model.ElementFactory; -import model.Strategy; +import model.StrategyElement; import util.Position; import java.util.ArrayList; @@ -10,11 +10,11 @@ import java.util.List; import static model.Board.BoardFireFighterBehavior.*; -public class MotorizedStrategy implements Strategy { +public class MotorizedStrategyElement implements StrategyElement { private final ElementFactory<MotorizedFireFighter> motorizedFactory; private List<Position> motorizedFighters; - public MotorizedStrategy(ElementFactory<MotorizedFireFighter> motorizedFactory) { + public MotorizedStrategyElement(ElementFactory<MotorizedFireFighter> motorizedFactory) { this.motorizedFactory = motorizedFactory; this.motorizedFighters = new ArrayList<>(); } diff --git a/src/main/java/model/Strategy.java b/src/main/java/model/StrategyElement.java similarity index 87% rename from src/main/java/model/Strategy.java rename to src/main/java/model/StrategyElement.java index 83bf4c6051af47604885b7ba066567442bb80dea..c4486353974bb122797ffd21cf8f48ffe3999295 100644 --- a/src/main/java/model/Strategy.java +++ b/src/main/java/model/StrategyElement.java @@ -5,7 +5,7 @@ import util.Position; import java.util.Collection; import java.util.List; -public interface Strategy { +public interface StrategyElement { public List<Position> updateElements(); public void initializeElement(int rowCount, int columnCount); diff --git a/src/main/java/model/flammable/FireStrategy.java b/src/main/java/model/flammable/FireStrategyElement.java similarity index 92% rename from src/main/java/model/flammable/FireStrategy.java rename to src/main/java/model/flammable/FireStrategyElement.java index 11518f3e9b443701eb0b0ae1128d8d522dbf3f38..277779ebed16d5d405e75e20815fa2a89580ae7a 100644 --- a/src/main/java/model/flammable/FireStrategy.java +++ b/src/main/java/model/flammable/FireStrategyElement.java @@ -1,19 +1,19 @@ package model.flammable; import model.ElementFactory; -import model.Strategy; +import model.StrategyElement; import util.Position; import java.util.*; import static model.Board.BoardFireFighterBehavior.*; -public class FireStrategy implements Strategy { +public class FireStrategyElement implements StrategyElement { private final ElementFactory<Fire> fireFactory; private Set<Position> firePositions; - public FireStrategy(ElementFactory<Fire> fireFactory) { + public FireStrategyElement(ElementFactory<Fire> fireFactory) { this.fireFactory = fireFactory; this.firePositions = new HashSet<>(); }