Skip to content
Snippets Groups Projects
Commit c7648e79 authored by AREZKI Celia's avatar AREZKI Celia
Browse files

Define the Strategy of the move

parent 7715a07c
No related branches found
No related tags found
No related merge requests found
Pipeline #42934 passed
...@@ -6,7 +6,7 @@ import model.Obstacle.MountainGenerator; ...@@ -6,7 +6,7 @@ import model.Obstacle.MountainGenerator;
import model.Obstacle.Road; import model.Obstacle.Road;
import model.Obstacle.Terrain; import model.Obstacle.Terrain;
import model.flammable.Fire; import model.flammable.Fire;
import model.flammable.FireMovements; import model.flammable.FireStrategy;
import model.flammable.Rocky; import model.flammable.Rocky;
import util.Position; import util.Position;
import util.TargetStrategy; import util.TargetStrategy;
...@@ -24,10 +24,10 @@ public class BoardFireFighterBehavior implements BoardBehavior { ...@@ -24,10 +24,10 @@ public class BoardFireFighterBehavior implements BoardBehavior {
private ElementFactory<Rocky> rockyFactory; private ElementFactory<Rocky> rockyFactory;
private static Map<Position, Terrain> terrainMap = new HashMap<>(); private static Map<Position, Terrain> terrainMap = new HashMap<>();
private static int step; private static int step;
static Movements fireMovements ; static Strategy fireStrategy;
static Movements fireFighterMovements; static Strategy fireFighterStrategy;
static Movements cloudMovements; static Strategy cloudStrategy;
static Movements motorizedMovements; static Strategy motorizedStrategy;
private ElementGenerator moutainGenerator; 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<FireFighter> firefighterFactory,
...@@ -35,19 +35,19 @@ public class BoardFireFighterBehavior implements BoardBehavior { ...@@ -35,19 +35,19 @@ public class BoardFireFighterBehavior implements BoardBehavior {
this.step=0; this.step=0;
this.neighbors = neighbors; this.neighbors = neighbors;
this.rockyFactory=rockyFactory; this.rockyFactory=rockyFactory;
fireMovements=new FireMovements(fireFactory); fireStrategy =new FireStrategy(fireFactory);
fireFighterMovements=new FireFighterMovements(firefighterFactory); fireFighterStrategy =new FireFighterStrategy(firefighterFactory);
cloudMovements=new CloudMovements(cloudFactory); cloudStrategy =new CloudStrategy(cloudFactory);
motorizedMovements=new MotorizedMovements(motorizedFactory); motorizedStrategy =new MotorizedStrategy(motorizedFactory);
moutainGenerator=new MountainGenerator(); moutainGenerator=new MountainGenerator();
} }
public void initializeElements(int rowCount, int columnCount) { public void initializeElements(int rowCount, int columnCount) {
fireMovements.initializeElement(rowCount,columnCount); fireStrategy.initializeElement(rowCount,columnCount);
fireFighterMovements.initializeElement(rowCount,columnCount); fireFighterStrategy.initializeElement(rowCount,columnCount);
cloudMovements.initializeElement(rowCount,columnCount); cloudStrategy.initializeElement(rowCount,columnCount);
// Pompiers motorisés // Pompiers motorisés
motorizedMovements.initializeElement(rowCount,columnCount); motorizedStrategy.initializeElement(rowCount,columnCount);
// Rocky // Rocky
rocky = new ArrayList<>(); rocky = new ArrayList<>();
List<Rocky> rockies = rockyFactory.createElements(rowCount, columnCount); List<Rocky> rockies = rockyFactory.createElements(rowCount, columnCount);
...@@ -65,7 +65,7 @@ public class BoardFireFighterBehavior implements BoardBehavior { ...@@ -65,7 +65,7 @@ public class BoardFireFighterBehavior implements BoardBehavior {
public static void extinguish(Position position) { public static void extinguish(Position position) {
fireMovements.getPositions().remove(position); fireStrategy.getPositions().remove(position);
...@@ -74,7 +74,7 @@ public class BoardFireFighterBehavior implements BoardBehavior { ...@@ -74,7 +74,7 @@ public class BoardFireFighterBehavior implements BoardBehavior {
public Set<Position> getFirePositions() { public Set<Position> getFirePositions() {
return (Set<Position>) fireMovements.getPositions(); return (Set<Position>) fireStrategy.getPositions();
} }
...@@ -91,10 +91,10 @@ public class BoardFireFighterBehavior implements BoardBehavior { ...@@ -91,10 +91,10 @@ public class BoardFireFighterBehavior implements BoardBehavior {
@Override @Override
public List<Position> updateToNextGeneration() { public List<Position> updateToNextGeneration() {
List<Position> modifiedPositions = fireFighterMovements.updateElements(); List<Position> modifiedPositions = fireFighterStrategy.updateElements();
modifiedPositions.addAll(fireMovements.updateElements()); modifiedPositions.addAll(fireStrategy.updateElements());
modifiedPositions.addAll(cloudMovements.updateElements()); modifiedPositions.addAll(cloudStrategy.updateElements());
modifiedPositions.addAll(motorizedMovements.updateElements()); modifiedPositions.addAll(motorizedStrategy.updateElements());
incrementStep(); incrementStep();
return modifiedPositions; return modifiedPositions;
} }
...@@ -103,10 +103,10 @@ public class BoardFireFighterBehavior implements BoardBehavior { ...@@ -103,10 +103,10 @@ public class BoardFireFighterBehavior implements BoardBehavior {
public void reset() { public void reset() {
this.step=0; this.step=0;
// Vider toutes les positions stockées // Vider toutes les positions stockées
fireMovements.getPositions().clear(); fireStrategy.getPositions().clear();
fireFighterMovements.getPositions().clear(); fireFighterStrategy.getPositions().clear();
cloudMovements.getPositions().clear(); cloudStrategy.getPositions().clear();
motorizedMovements.getPositions().clear(); motorizedStrategy.getPositions().clear();
rocky.clear(); rocky.clear();
terrainMap.clear(); terrainMap.clear();
...@@ -123,10 +123,10 @@ public class BoardFireFighterBehavior implements BoardBehavior { ...@@ -123,10 +123,10 @@ public class BoardFireFighterBehavior implements BoardBehavior {
public static void extinguishNearbyFires(Position firefighterPosition, List<Position> modifiedPositions) { public static void extinguishNearbyFires(Position firefighterPosition, List<Position> modifiedPositions) {
List<Position> nearbyFires = getNeighbors().getOrDefault(firefighterPosition, Collections.emptyList()) List<Position> nearbyFires = getNeighbors().getOrDefault(firefighterPosition, Collections.emptyList())
.stream() .stream()
.filter(fireMovements.getPositions()::contains) .filter(fireStrategy.getPositions()::contains)
.toList(); .toList();
for (Position fire : nearbyFires) { for (Position fire : nearbyFires) {
fireMovements.getPositions().remove(fire); fireStrategy.getPositions().remove(fire);
modifiedPositions.add(fire); modifiedPositions.add(fire);
System.out.println("Feu éteint à : " + fire); System.out.println("Feu éteint à : " + fire);
} }
...@@ -142,12 +142,12 @@ public class BoardFireFighterBehavior implements BoardBehavior { ...@@ -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 // 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; return false;
} }
// Si la position est une montagne, aucun élément ne peut la franchir sauf les nuages // 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 return false; // Impossible de franchir une montagne, sauf pour un nuage
} }
if(rocky.contains(position)) if(rocky.contains(position))
...@@ -231,18 +231,18 @@ public class BoardFireFighterBehavior implements BoardBehavior { ...@@ -231,18 +231,18 @@ public class BoardFireFighterBehavior implements BoardBehavior {
public static Collection<Position> getFirefighterPositions() { public static Collection<Position> getFirefighterPositions() {
return fireFighterMovements.getPositions(); return fireFighterStrategy.getPositions();
} }
public Collection<Position> getCloudPositions() { public Collection<Position> getCloudPositions() {
return cloudMovements.getPositions(); return cloudStrategy.getPositions();
} }
public List<Position> getMotorizedFighters() { public List<Position> getMotorizedFighters() {
return (List<Position>) motorizedMovements.getPositions(); return (List<Position>) motorizedStrategy.getPositions();
} }
public static Movements getFireMovements() { public static Strategy getFireMovements() {
return fireMovements; return fireStrategy;
} }
} }
package model.ExtinguishFire; package model.ExtinguishFire;
import model.ElementFactory; import model.ElementFactory;
import model.Movements; import model.Strategy;
import util.Position; import util.Position;
import java.util.*; import java.util.*;
import static model.Board.BoardFireFighterBehavior.*; import static model.Board.BoardFireFighterBehavior.*;
public class CloudMovements implements Movements { public class CloudStrategy implements Strategy {
private List<Position> cloudPositions; private List<Position> cloudPositions;
private final ElementFactory<Cloud> cloudFactory; private final ElementFactory<Cloud> cloudFactory;
public CloudMovements(ElementFactory<Cloud> cloudFactory) { public CloudStrategy(ElementFactory<Cloud> cloudFactory) {
this.cloudPositions = new ArrayList<>(); this.cloudPositions = new ArrayList<>();
this.cloudFactory = cloudFactory; this.cloudFactory = cloudFactory;
} }
......
package model.ExtinguishFire; package model.ExtinguishFire;
import model.ElementFactory; import model.ElementFactory;
import model.Movements; import model.Strategy;
import util.Position; import util.Position;
import java.util.ArrayList; import java.util.ArrayList;
...@@ -11,10 +11,10 @@ import java.util.Set; ...@@ -11,10 +11,10 @@ import java.util.Set;
import static model.Board.BoardFireFighterBehavior.*; import static model.Board.BoardFireFighterBehavior.*;
public class FireFighterMovements implements Movements { public class FireFighterStrategy implements Strategy {
private final ElementFactory<FireFighter> firefighterFactory; private final ElementFactory<FireFighter> firefighterFactory;
private List<Position> firefighterPositions; private List<Position> firefighterPositions;
public FireFighterMovements(ElementFactory<FireFighter> firefighterFactory) { public FireFighterStrategy(ElementFactory<FireFighter> firefighterFactory) {
this.firefighterFactory = firefighterFactory; this.firefighterFactory = firefighterFactory;
this.firefighterPositions = new ArrayList<>(); this.firefighterPositions = new ArrayList<>();
} }
......
package model.ExtinguishFire; package model.ExtinguishFire;
import model.ElementFactory; import model.ElementFactory;
import model.Movements; import model.Strategy;
import util.Position; import util.Position;
import java.util.ArrayList; import java.util.ArrayList;
...@@ -9,13 +9,12 @@ import java.util.Collection; ...@@ -9,13 +9,12 @@ import java.util.Collection;
import java.util.List; import java.util.List;
import static model.Board.BoardFireFighterBehavior.*; 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 final ElementFactory<MotorizedFireFighter> motorizedFactory;
private List<Position> motorizedFighters; private List<Position> motorizedFighters;
public MotorizedMovements(ElementFactory<MotorizedFireFighter> motorizedFactory) { public MotorizedStrategy(ElementFactory<MotorizedFireFighter> motorizedFactory) {
this.motorizedFactory = motorizedFactory; this.motorizedFactory = motorizedFactory;
this.motorizedFighters = new ArrayList<>(); this.motorizedFighters = new ArrayList<>();
} }
......
...@@ -5,7 +5,7 @@ import util.Position; ...@@ -5,7 +5,7 @@ import util.Position;
import java.util.Collection; import java.util.Collection;
import java.util.List; import java.util.List;
public interface Movements { public interface Strategy {
public List<Position> updateElements(); public List<Position> updateElements();
public void initializeElement(int rowCount, int columnCount); public void initializeElement(int rowCount, int columnCount);
......
package model.flammable; package model.flammable;
import model.ElementFactory; import model.ElementFactory;
import model.Movements; import model.Strategy;
import util.Position; import util.Position;
import java.util.*; import java.util.*;
import static model.Board.BoardFireFighterBehavior.*; import static model.Board.BoardFireFighterBehavior.*;
public class FireMovements implements Movements { public class FireStrategy implements Strategy {
private final ElementFactory<Fire> fireFactory; private final ElementFactory<Fire> fireFactory;
private Set<Position> firePositions; private Set<Position> firePositions;
public FireMovements(ElementFactory<Fire> fireFactory) { public FireStrategy(ElementFactory<Fire> fireFactory) {
this.fireFactory = fireFactory; this.fireFactory = fireFactory;
this.firePositions = new HashSet<>(); this.firePositions = new HashSet<>();
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment