Skip to content
Snippets Groups Projects
Commit 573ef929 authored by BELHACHEMI Mehdi's avatar BELHACHEMI Mehdi
Browse files

mehdi : changing setState extinguish

parent 8fc54d75
No related branches found
No related tags found
No related merge requests found
......@@ -19,4 +19,8 @@ public class Fire {
public Position getFirePosition() {
return firePositions;
}
}
package model;
import util.TargetStrategy;
import util.Position;
import java.util.*;
public class FirefighterBoard implements Board<List<ModelElement>> {
private final int columnCount;
private final int rowCount;
......@@ -90,10 +94,14 @@ public class FirefighterBoard implements Board<List<ModelElement>> {
List<Position> modifiedPositions = new ArrayList<>();
if (step % 2 == 0) {
List<Position> newFirePositions = new ArrayList<>();
for (Fire fire : fires) {
for (Fire fire : fire) {
newFirePositions.addAll(neighbors.get(fire));
}
firePositions.addAll(newFirePositions);
for (Position position : newFirePositions) {
fire.add(new Fire(position));
}
modifiedPositions.addAll(newFirePositions);
}
return modifiedPositions;
......@@ -108,13 +116,13 @@ public class FirefighterBoard implements Board<List<ModelElement>> {
private List<Position> updateFirefighters() {
List<Position> modifiedPosition = new ArrayList<>();
List<Position> firefighterNewPositions = new ArrayList<>();
for (Position firefighterPosition : firefighterPositions) {
for (FireFighter firefighterPosition : firefighter) {
Position newFirefighterPosition =
targetStrategy.neighborClosestToFire(firefighterPosition,
firePositions, neighbors);
firefighterNewPositions.add(newFirefighterPosition);
extinguish(newFirefighterPosition);
modifiedPosition.add(firefighterPosition);
modifiedPosition.add(firefighterPosition.getFireFighterPosition());
modifiedPosition.add(newFirefighterPosition);
List<Position> neighborFirePositions = neighbors.get(newFirefighterPosition).stream()
.filter(firePositions::contains).toList();
......@@ -133,21 +141,33 @@ public class FirefighterBoard implements Board<List<ModelElement>> {
}
private void extinguish(Position position) {
firePositions.remove(position);
fire.remove(position);
}
@Override
public void setState(List<ModelElement> state, Position position) {
firePositions.remove(position);
extinguish(position);
for (; ; ) {
if (!firefighterPositions.remove(position)) break;
for (FireFighter fireFighter : firefighter) {
if (fireFighter.getFireFighterPosition().equals(position)) {
firefighter.remove(position);
break;
}
}
for (ModelElement element : state) {
switch (element) {
case FIRE -> firePositions.add(position);
case FIREFIGHTER -> firefighterPositions.add(position);
case FIRE -> fire.add(new Fire(position));
case FIREFIGHTER -> firefighter.add(new FireFighter(position));
}
}
}
}
}
\ No newline at end of file
package model;
package util;
import util.Position;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment