From 573ef92960b31a7b167f04120f07ec47085dc1a7 Mon Sep 17 00:00:00 2001 From: b22015516 <mehdi.belhachemi@etu.univ-amu.fr> Date: Fri, 8 Nov 2024 11:56:27 +0100 Subject: [PATCH] mehdi : changing setState extinguish --- src/main/java/model/Fire.java | 4 ++ src/main/java/model/FirefighterBoard.java | 54 ++++++++++++++++------- src/main/java/util/TargetStrategy.java | 2 +- 3 files changed, 42 insertions(+), 18 deletions(-) diff --git a/src/main/java/model/Fire.java b/src/main/java/model/Fire.java index 648fdf7..3521353 100644 --- a/src/main/java/model/Fire.java +++ b/src/main/java/model/Fire.java @@ -19,4 +19,8 @@ public class Fire { public Position getFirePosition() { return firePositions; } + + + + } diff --git a/src/main/java/model/FirefighterBoard.java b/src/main/java/model/FirefighterBoard.java index 5627c7c..ae9de07 100644 --- a/src/main/java/model/FirefighterBoard.java +++ b/src/main/java/model/FirefighterBoard.java @@ -1,10 +1,14 @@ 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; @@ -42,7 +46,7 @@ public class FirefighterBoard implements Board<List<ModelElement>> { public void initializeElements() { firefighter = new ArrayList<>(); fire = new HashSet<>(); - for (int index = 0; index < initialFireCount; index++){ + for (int index = 0; index < initialFireCount; index++) { fire.add(new Fire(randomPosition())); } @@ -61,11 +65,11 @@ public class FirefighterBoard implements Board<List<ModelElement>> { if (firefighter.getFireFighterPosition().equals(position)) result.add(ModelElement.FIREFIGHTER); - for(Fire fire : fire){ - if(fire.getFirePosition().equals(position)){ - result.add(ModelElement.FIRE); - } + for (Fire fire : fire) { + if (fire.getFirePosition().equals(position)) { + result.add(ModelElement.FIRE); } + } return result; } @@ -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 (ModelElement element : state) { - switch (element) { - case FIRE -> firePositions.add(position); - case FIREFIGHTER -> firefighterPositions.add(position); + + for (FireFighter fireFighter : firefighter) { + if (fireFighter.getFireFighterPosition().equals(position)) { + firefighter.remove(position); + break; + } + } + + + for (ModelElement element : state) { + switch (element) { + case FIRE -> fire.add(new Fire(position)); + case FIREFIGHTER -> firefighter.add(new FireFighter(position)); + } } } } + + + } \ No newline at end of file diff --git a/src/main/java/util/TargetStrategy.java b/src/main/java/util/TargetStrategy.java index 5831867..071869c 100644 --- a/src/main/java/util/TargetStrategy.java +++ b/src/main/java/util/TargetStrategy.java @@ -1,4 +1,4 @@ -package model; +package util; import util.Position; -- GitLab