diff --git a/src/main/java/model/FirefighterBoard.java b/src/main/java/model/FirefighterBoard.java index ae9de0727e3569fe7085bfb5b4721fccb0be4653..9922db34e6ac98b44ead3ba3f021e3f211c0e7bd 100644 --- a/src/main/java/model/FirefighterBoard.java +++ b/src/main/java/model/FirefighterBoard.java @@ -115,14 +115,18 @@ public class FirefighterBoard implements Board<List<ModelElement>> { private List<Position> updateFirefighters() { List<Position> modifiedPosition = new ArrayList<>(); - List<Position> firefighterNewPositions = new ArrayList<>(); - for (FireFighter firefighterPosition : firefighter) { + List<FireFighter> firefighters = new ArrayList<>(); + List<Position> firePositions = new ArrayList<>(); + for(Fire fire: fire){ + firePositions.add(fire.getFirePosition()); + } + for (FireFighter firefighter: firefighter) { Position newFirefighterPosition = - targetStrategy.neighborClosestToFire(firefighterPosition, + targetStrategy.neighborClosestToFire(firefighter.getFireFighterPosition(), firePositions, neighbors); - firefighterNewPositions.add(newFirefighterPosition); + firefighters.add(firefighter); extinguish(newFirefighterPosition); - modifiedPosition.add(firefighterPosition.getFireFighterPosition()); + modifiedPosition.add(firefighter.getFireFighterPosition()); modifiedPosition.add(newFirefighterPosition); List<Position> neighborFirePositions = neighbors.get(newFirefighterPosition).stream() .filter(firePositions::contains).toList(); @@ -130,7 +134,7 @@ public class FirefighterBoard implements Board<List<ModelElement>> { extinguish(firePosition); modifiedPosition.addAll(neighborFirePositions); } - firefighterPositions = firefighterNewPositions; + firefighter = firefighters; return modifiedPosition; } diff --git a/src/main/java/util/TargetStrategy.java b/src/main/java/util/TargetStrategy.java index 071869cfe268ffb832b1568abaad12c2947f12e6..7ebc6c160044ec29e49da58250b44b9eca47b8e1 100644 --- a/src/main/java/util/TargetStrategy.java +++ b/src/main/java/util/TargetStrategy.java @@ -12,7 +12,7 @@ public class TargetStrategy { * @param targets positions that are targeted. * @return the position next to the current position that is on the path to the closest target. */ - Position neighborClosestToFire(Position position, Collection<Position> targets, + public Position neighborClosestToFire(Position position, Collection<Position> targets, Map<Position,List<Position>>neighbors) { Set<Position> seen = new HashSet<Position>(); HashMap<Position, Position> firstMove = new HashMap<Position, Position>();