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
Branches
No related tags found
No related merge requests found
...@@ -2,10 +2,28 @@ package model; ...@@ -2,10 +2,28 @@ package model;
import util.Position; import util.Position;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Map;
public class ClassicFireFighter extends FirefighterManager{ public class ClassicFireFighter extends FirefighterManager{
public ClassicFireFighter(List<Position> firefighterPositions) { public ClassicFireFighter(List<Position> firefighterPositions) {
super(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 { ...@@ -10,5 +10,5 @@ public interface FirefighterBehavior {
Position moveToTarget(Position currentPosition, Collection<Position> firePositions, Position moveToTarget(Position currentPosition, Collection<Position> firePositions,
Map<Position, List<Position>> neighbors); // Déplacer un pompier vers une cible. Map<Position, List<Position>> neighbors); // Déplacer un pompier vers une cible.
void extinguishFire(Position firePosition); // Éteindre un feu à une position donnée. 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 ...@@ -11,8 +11,8 @@ public class FirefighterBoard implements BoardBehavior<List<ModelElement>> ,Boa
private final int initialFireCount; private final int initialFireCount;
private final int initialFirefighterCount; private final int initialFirefighterCount;
private final FireManager fireManager; private FireManager fireManager;
private final FirefighterManager firefighterManager; private FirefighterManager firefighterManager;
private final Position[][] positions; private final Position[][] positions;
private int step = 0; private int step = 0;
...@@ -28,9 +28,9 @@ public class FirefighterBoard implements BoardBehavior<List<ModelElement>> ,Boa ...@@ -28,9 +28,9 @@ public class FirefighterBoard implements BoardBehavior<List<ModelElement>> ,Boa
initializePositions(); initializePositions();
initializeNeighbors(); initializeNeighbors();
// Initialize manager // Initialize manager
this.fireManager = new FireManager(new HashSet<>(),new FirefighterManager(new ArrayList<>())); // this.fireManager = new FireManager(new HashSet<>(),new FirefighterManager(new ArrayList<>()));
this.firefighterManager = new FirefighterManager(new ArrayList<>()); //this.firefighterManager = new FirefighterManager(new ArrayList<>());
this.firefighterManager.setFireManager(fireManager); //this.firefighterManager.setFireManager(fireManager);
initializeElements(); initializeElements();
} }
......
...@@ -8,8 +8,8 @@ import java.util.Collection; ...@@ -8,8 +8,8 @@ import java.util.Collection;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
public class FirefighterManager implements FirefighterBehavior, FirefighterProperties { public abstract class FirefighterManager implements FirefighterBehavior, FirefighterProperties {
private List<Position> firefighterPositions; protected List<Position> firefighterPositions;
FireManager fireManager; FireManager fireManager;
public void setFireManager(FireManager fireManager) { public void setFireManager(FireManager fireManager) {
...@@ -41,26 +41,7 @@ public class FirefighterManager implements FirefighterBehavior, FirefighterPrope ...@@ -41,26 +41,7 @@ public class FirefighterManager implements FirefighterBehavior, FirefighterPrope
firefighterPositions.remove(oldPosition); firefighterPositions.remove(oldPosition);
firefighterPositions.add(newPosition); 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); public abstract List<Position> updateFirefighters(int step, Map<Position, List<Position>> neighbors) ;
modifiedPositions.add(newFirefighterPosition);
}
return modifiedPositions;
}
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment