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