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;
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;
}
}
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;
}
......
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<>();
}
......
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<>();
}
......
......@@ -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);
......
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<>();
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment