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

ClassicFireFighter : complete the methode updateFirefighters

parent 65579fbe
No related branches found
No related tags found
No related merge requests found
......@@ -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;
}
}
......@@ -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);
}
......@@ -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();
}
......
......@@ -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) ;
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment