From c7648e79b5663812a89a76795c3ff05bd2cf9329 Mon Sep 17 00:00:00 2001 From: Celia AREZKI <celia.arezki.1@etu.univ-amu.fr> Date: Fri, 6 Dec 2024 13:06:10 +0100 Subject: [PATCH] Define the Strategy of the move --- .../model/Board/BoardFireFighterBehavior.java | 64 +++++++++---------- ...CloudMovements.java => CloudStrategy.java} | 6 +- ...ovements.java => FireFighterStrategy.java} | 6 +- ...dMovements.java => MotorizedStrategy.java} | 7 +- .../model/{Movements.java => Strategy.java} | 2 +- .../{FireMovements.java => FireStrategy.java} | 6 +- 6 files changed, 45 insertions(+), 46 deletions(-) rename src/main/java/model/ExtinguishFire/{CloudMovements.java => CloudStrategy.java} (95%) rename src/main/java/model/ExtinguishFire/{FireFighterMovements.java => FireFighterStrategy.java} (95%) rename src/main/java/model/ExtinguishFire/{MotorizedMovements.java => MotorizedStrategy.java} (93%) rename src/main/java/model/{Movements.java => Strategy.java} (89%) rename src/main/java/model/flammable/{FireMovements.java => FireStrategy.java} (93%) diff --git a/src/main/java/model/Board/BoardFireFighterBehavior.java b/src/main/java/model/Board/BoardFireFighterBehavior.java index 1f1d467..9a88252 100644 --- a/src/main/java/model/Board/BoardFireFighterBehavior.java +++ b/src/main/java/model/Board/BoardFireFighterBehavior.java @@ -6,7 +6,7 @@ import model.Obstacle.MountainGenerator; import model.Obstacle.Road; import model.Obstacle.Terrain; import model.flammable.Fire; -import model.flammable.FireMovements; +import model.flammable.FireStrategy; import model.flammable.Rocky; import util.Position; import util.TargetStrategy; @@ -24,10 +24,10 @@ public class BoardFireFighterBehavior implements BoardBehavior { private ElementFactory<Rocky> rockyFactory; private static Map<Position, Terrain> terrainMap = new HashMap<>(); private static int step; - static Movements fireMovements ; - static Movements fireFighterMovements; - static Movements cloudMovements; - static Movements motorizedMovements; + static Strategy fireStrategy; + static Strategy fireFighterStrategy; + static Strategy cloudStrategy; + static Strategy motorizedStrategy; private ElementGenerator moutainGenerator; public BoardFireFighterBehavior(Map<Position, List<Position>> neighbors, ElementFactory<Fire> fireFactory , ElementFactory<FireFighter> firefighterFactory, @@ -35,19 +35,19 @@ public class BoardFireFighterBehavior implements BoardBehavior { this.step=0; this.neighbors = neighbors; this.rockyFactory=rockyFactory; - fireMovements=new FireMovements(fireFactory); - fireFighterMovements=new FireFighterMovements(firefighterFactory); - cloudMovements=new CloudMovements(cloudFactory); - motorizedMovements=new MotorizedMovements(motorizedFactory); + fireStrategy =new FireStrategy(fireFactory); + fireFighterStrategy =new FireFighterStrategy(firefighterFactory); + cloudStrategy =new CloudStrategy(cloudFactory); + motorizedStrategy =new MotorizedStrategy(motorizedFactory); moutainGenerator=new MountainGenerator(); } public void initializeElements(int rowCount, int columnCount) { - fireMovements.initializeElement(rowCount,columnCount); - fireFighterMovements.initializeElement(rowCount,columnCount); - cloudMovements.initializeElement(rowCount,columnCount); + fireStrategy.initializeElement(rowCount,columnCount); + fireFighterStrategy.initializeElement(rowCount,columnCount); + cloudStrategy.initializeElement(rowCount,columnCount); // Pompiers motorisés - motorizedMovements.initializeElement(rowCount,columnCount); + motorizedStrategy.initializeElement(rowCount,columnCount); // Rocky rocky = new ArrayList<>(); List<Rocky> rockies = rockyFactory.createElements(rowCount, columnCount); @@ -65,7 +65,7 @@ public class BoardFireFighterBehavior implements BoardBehavior { public static void extinguish(Position position) { - fireMovements.getPositions().remove(position); + fireStrategy.getPositions().remove(position); @@ -74,7 +74,7 @@ public class BoardFireFighterBehavior implements BoardBehavior { public Set<Position> getFirePositions() { - return (Set<Position>) fireMovements.getPositions(); + return (Set<Position>) fireStrategy.getPositions(); } @@ -91,10 +91,10 @@ public class BoardFireFighterBehavior implements BoardBehavior { @Override public List<Position> updateToNextGeneration() { - List<Position> modifiedPositions = fireFighterMovements.updateElements(); - modifiedPositions.addAll(fireMovements.updateElements()); - modifiedPositions.addAll(cloudMovements.updateElements()); - modifiedPositions.addAll(motorizedMovements.updateElements()); + List<Position> modifiedPositions = fireFighterStrategy.updateElements(); + modifiedPositions.addAll(fireStrategy.updateElements()); + modifiedPositions.addAll(cloudStrategy.updateElements()); + modifiedPositions.addAll(motorizedStrategy.updateElements()); incrementStep(); return modifiedPositions; } @@ -103,10 +103,10 @@ public class BoardFireFighterBehavior implements BoardBehavior { public void reset() { this.step=0; // Vider toutes les positions stockées - fireMovements.getPositions().clear(); - fireFighterMovements.getPositions().clear(); - cloudMovements.getPositions().clear(); - motorizedMovements.getPositions().clear(); + fireStrategy.getPositions().clear(); + fireFighterStrategy.getPositions().clear(); + cloudStrategy.getPositions().clear(); + motorizedStrategy.getPositions().clear(); rocky.clear(); terrainMap.clear(); @@ -123,10 +123,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(fireMovements.getPositions()::contains) + .filter(fireStrategy.getPositions()::contains) .toList(); for (Position fire : nearbyFires) { - fireMovements.getPositions().remove(fire); + fireStrategy.getPositions().remove(fire); modifiedPositions.add(fire); System.out.println("Feu éteint à : " + fire); } @@ -142,12 +142,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(cloudMovements.getPositions().contains(position)) + if(cloudStrategy.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 && !cloudMovements.getPositions().contains(position)) { + if (terrainMap.get(position) != null && !cloudStrategy.getPositions().contains(position)) { return false; // Impossible de franchir une montagne, sauf pour un nuage } if(rocky.contains(position)) @@ -231,18 +231,18 @@ public class BoardFireFighterBehavior implements BoardBehavior { public static Collection<Position> getFirefighterPositions() { - return fireFighterMovements.getPositions(); + return fireFighterStrategy.getPositions(); } public Collection<Position> getCloudPositions() { - return cloudMovements.getPositions(); + return cloudStrategy.getPositions(); } public List<Position> getMotorizedFighters() { - return (List<Position>) motorizedMovements.getPositions(); + return (List<Position>) motorizedStrategy.getPositions(); } - public static Movements getFireMovements() { - return fireMovements; + public static Strategy getFireMovements() { + return fireStrategy; } } diff --git a/src/main/java/model/ExtinguishFire/CloudMovements.java b/src/main/java/model/ExtinguishFire/CloudStrategy.java similarity index 95% rename from src/main/java/model/ExtinguishFire/CloudMovements.java rename to src/main/java/model/ExtinguishFire/CloudStrategy.java index c5269e8..f65b43b 100644 --- a/src/main/java/model/ExtinguishFire/CloudMovements.java +++ b/src/main/java/model/ExtinguishFire/CloudStrategy.java @@ -1,17 +1,17 @@ package model.ExtinguishFire; import model.ElementFactory; -import model.Movements; +import model.Strategy; import util.Position; import java.util.*; import static model.Board.BoardFireFighterBehavior.*; -public class CloudMovements implements Movements { +public class CloudStrategy implements Strategy { private List<Position> cloudPositions; private final ElementFactory<Cloud> cloudFactory; - public CloudMovements(ElementFactory<Cloud> cloudFactory) { + public CloudStrategy(ElementFactory<Cloud> cloudFactory) { this.cloudPositions = new ArrayList<>(); this.cloudFactory = cloudFactory; } diff --git a/src/main/java/model/ExtinguishFire/FireFighterMovements.java b/src/main/java/model/ExtinguishFire/FireFighterStrategy.java similarity index 95% rename from src/main/java/model/ExtinguishFire/FireFighterMovements.java rename to src/main/java/model/ExtinguishFire/FireFighterStrategy.java index 91c2f78..fd60dbe 100644 --- a/src/main/java/model/ExtinguishFire/FireFighterMovements.java +++ b/src/main/java/model/ExtinguishFire/FireFighterStrategy.java @@ -1,7 +1,7 @@ package model.ExtinguishFire; import model.ElementFactory; -import model.Movements; +import model.Strategy; import util.Position; import java.util.ArrayList; @@ -11,10 +11,10 @@ import java.util.Set; import static model.Board.BoardFireFighterBehavior.*; -public class FireFighterMovements implements Movements { +public class FireFighterStrategy implements Strategy { private final ElementFactory<FireFighter> firefighterFactory; private List<Position> firefighterPositions; - public FireFighterMovements(ElementFactory<FireFighter> firefighterFactory) { + public FireFighterStrategy(ElementFactory<FireFighter> firefighterFactory) { this.firefighterFactory = firefighterFactory; this.firefighterPositions = new ArrayList<>(); } diff --git a/src/main/java/model/ExtinguishFire/MotorizedMovements.java b/src/main/java/model/ExtinguishFire/MotorizedStrategy.java similarity index 93% rename from src/main/java/model/ExtinguishFire/MotorizedMovements.java rename to src/main/java/model/ExtinguishFire/MotorizedStrategy.java index f486f19..67e0dbf 100644 --- a/src/main/java/model/ExtinguishFire/MotorizedMovements.java +++ b/src/main/java/model/ExtinguishFire/MotorizedStrategy.java @@ -1,7 +1,7 @@ package model.ExtinguishFire; import model.ElementFactory; -import model.Movements; +import model.Strategy; import util.Position; import java.util.ArrayList; @@ -9,13 +9,12 @@ import java.util.Collection; import java.util.List; import static model.Board.BoardFireFighterBehavior.*; -import static model.flammable.FireMovements.*; -public class MotorizedMovements implements Movements { +public class MotorizedStrategy implements Strategy { private final ElementFactory<MotorizedFireFighter> motorizedFactory; private List<Position> motorizedFighters; - public MotorizedMovements(ElementFactory<MotorizedFireFighter> motorizedFactory) { + public MotorizedStrategy(ElementFactory<MotorizedFireFighter> motorizedFactory) { this.motorizedFactory = motorizedFactory; this.motorizedFighters = new ArrayList<>(); } diff --git a/src/main/java/model/Movements.java b/src/main/java/model/Strategy.java similarity index 89% rename from src/main/java/model/Movements.java rename to src/main/java/model/Strategy.java index 0f1638a..83bf4c6 100644 --- a/src/main/java/model/Movements.java +++ b/src/main/java/model/Strategy.java @@ -5,7 +5,7 @@ import util.Position; import java.util.Collection; import java.util.List; -public interface Movements { +public interface Strategy { public List<Position> updateElements(); public void initializeElement(int rowCount, int columnCount); diff --git a/src/main/java/model/flammable/FireMovements.java b/src/main/java/model/flammable/FireStrategy.java similarity index 93% rename from src/main/java/model/flammable/FireMovements.java rename to src/main/java/model/flammable/FireStrategy.java index dc5c123..11518f3 100644 --- a/src/main/java/model/flammable/FireMovements.java +++ b/src/main/java/model/flammable/FireStrategy.java @@ -1,19 +1,19 @@ package model.flammable; import model.ElementFactory; -import model.Movements; +import model.Strategy; import util.Position; import java.util.*; import static model.Board.BoardFireFighterBehavior.*; -public class FireMovements implements Movements { +public class FireStrategy implements Strategy { private final ElementFactory<Fire> fireFactory; private Set<Position> firePositions; - public FireMovements(ElementFactory<Fire> fireFactory) { + public FireStrategy(ElementFactory<Fire> fireFactory) { this.fireFactory = fireFactory; this.firePositions = new HashSet<>(); } -- GitLab