From f830f8ba97abaa7febfc07b8d2f3e6f9dc33d246 Mon Sep 17 00:00:00 2001 From: b22015516 <mehdi.belhachemi@etu.univ-amu.fr> Date: Tue, 19 Nov 2024 10:28:39 +0100 Subject: [PATCH] fixing problems --- src/main/java/model/Fire.java | 20 ++-- src/main/java/model/FireFighter.java | 20 ++-- src/main/java/model/FirefighterBoard.java | 112 ++++++++++++---------- src/main/java/module-info.java | 1 + 4 files changed, 84 insertions(+), 69 deletions(-) diff --git a/src/main/java/model/Fire.java b/src/main/java/model/Fire.java index 3521353..44b67bd 100644 --- a/src/main/java/model/Fire.java +++ b/src/main/java/model/Fire.java @@ -2,25 +2,29 @@ package model; import util.Position; -import java.util.Set; + public class Fire { - private Position firePositions; + private Position position; + public Fire(Position position){ - this.firePositions = position; + this.position = position; } - public void setFirePosition(Position postion){ - this.firePositions = postion; + + public Position getPosition() { + return position; } - public Position getFirePosition() { - return firePositions; + public void setPosition(Position position) { + this.position = position; } -} + + +} \ No newline at end of file diff --git a/src/main/java/model/FireFighter.java b/src/main/java/model/FireFighter.java index 96d9f7f..a6eb751 100644 --- a/src/main/java/model/FireFighter.java +++ b/src/main/java/model/FireFighter.java @@ -2,23 +2,27 @@ package model; import util.Position; -import java.util.List; public class FireFighter { + private Position position; - private Position FireFighterPosition; public FireFighter(Position position){ - this.FireFighterPosition = position; + this.position = position; } - public void setFireFighterPosition(Position postion){ - this.FireFighterPosition = postion; + public Position getPosition() { + return position; } - public Position getFireFighterPosition() { - return FireFighterPosition; + public void setPosition(Position position) { + this.position = position; } -} + + + + + +} \ No newline at end of file diff --git a/src/main/java/model/FirefighterBoard.java b/src/main/java/model/FirefighterBoard.java index 9922db3..9207e71 100644 --- a/src/main/java/model/FirefighterBoard.java +++ b/src/main/java/model/FirefighterBoard.java @@ -1,22 +1,19 @@ package model; -import util.TargetStrategy; - - import util.Position; +import util.TargetStrategy; import java.util.*; - public class FirefighterBoard implements Board<List<ModelElement>> { private final int columnCount; private final int rowCount; - private final int initialFirefighterCount; private final int initialFireCount; - private List<FireFighter> firefighter; - private Set<Fire> fire; + private final int initialFirefighterCount; private final TargetStrategy targetStrategy = new TargetStrategy(); + private List<FireFighter> firefighters; + private Set<Fire> fires; private Map<Position, List<Position>> neighbors = new HashMap(); private final Position[][] positions; private int step = 0; @@ -44,14 +41,12 @@ public class FirefighterBoard implements Board<List<ModelElement>> { } public void initializeElements() { - firefighter = new ArrayList<>(); - fire = new HashSet<>(); - for (int index = 0; index < initialFireCount; index++) { - fire.add(new Fire(randomPosition())); - } - + firefighters = new ArrayList<>(); + fires = new HashSet<>(); + for (int index = 0; index < initialFireCount; index++) + fires.add(new Fire(randomPosition())); for (int index = 0; index < initialFirefighterCount; index++) - firefighter.add(new FireFighter(randomPosition())); + firefighters.add(new FireFighter(randomPosition())); } private Position randomPosition() { @@ -61,15 +56,13 @@ public class FirefighterBoard implements Board<List<ModelElement>> { @Override public List<ModelElement> getState(Position position) { List<ModelElement> result = new ArrayList<>(); - for (FireFighter firefighter : firefighter) - if (firefighter.getFireFighterPosition().equals(position)) + for (FireFighter firefighter : firefighters) + if (firefighter.getPosition().equals(position)) result.add(ModelElement.FIREFIGHTER); - for (Fire fire : fire) { - if (fire.getFirePosition().equals(position)) { - result.add(ModelElement.FIRE); - } - } + if (this.getFirePositions(fires).contains(position)) + result.add(ModelElement.FIRE); + return result; } @@ -94,14 +87,10 @@ public class FirefighterBoard implements Board<List<ModelElement>> { List<Position> modifiedPositions = new ArrayList<>(); if (step % 2 == 0) { List<Position> newFirePositions = new ArrayList<>(); - for (Fire fire : fire) { + for (Position fire : getFirePositions(this.fires)) { newFirePositions.addAll(neighbors.get(fire)); } - - for (Position position : newFirePositions) { - fire.add(new Fire(position)); - } - + this.getFirePositions(fires).addAll(newFirePositions); modifiedPositions.addAll(newFirePositions); } return modifiedPositions; @@ -115,26 +104,26 @@ public class FirefighterBoard implements Board<List<ModelElement>> { private List<Position> updateFirefighters() { List<Position> modifiedPosition = new ArrayList<>(); - List<FireFighter> firefighters = new ArrayList<>(); - List<Position> firePositions = new ArrayList<>(); - for(Fire fire: fire){ - firePositions.add(fire.getFirePosition()); - } - for (FireFighter firefighter: firefighter) { + List<Position> firefighterNewPositions = new ArrayList<>(); + for (Position firefighterPosition : this.getFireFighterPositions(this.firefighters)) { Position newFirefighterPosition = - targetStrategy.neighborClosestToFire(firefighter.getFireFighterPosition(), - firePositions, neighbors); - firefighters.add(firefighter); + targetStrategy.neighborClosestToFire(firefighterPosition, + this.getFirePositions(fires), neighbors); + firefighterNewPositions.add(newFirefighterPosition); extinguish(newFirefighterPosition); - modifiedPosition.add(firefighter.getFireFighterPosition()); + modifiedPosition.add(firefighterPosition); modifiedPosition.add(newFirefighterPosition); List<Position> neighborFirePositions = neighbors.get(newFirefighterPosition).stream() - .filter(firePositions::contains).toList(); + .filter(this.getFirePositions(fires)::contains).toList(); for (Position firePosition : neighborFirePositions) extinguish(firePosition); modifiedPosition.addAll(neighborFirePositions); } - firefighter = firefighters; + ArrayList<FireFighter> newFireFighters = new ArrayList<>(); + for(Position position : firefighterNewPositions){ + newFireFighters.add(new FireFighter(position)); + } + firefighters = newFireFighters; return modifiedPosition; } @@ -145,8 +134,11 @@ public class FirefighterBoard implements Board<List<ModelElement>> { } private void extinguish(Position position) { - fire.remove(position); - + for(Fire fire: fires){ + if(fire.getPosition().equals(position)){ + fires.remove(fire); + } + } } @@ -154,24 +146,38 @@ public class FirefighterBoard implements Board<List<ModelElement>> { public void setState(List<ModelElement> state, Position position) { extinguish(position); for (; ; ) { - - for (FireFighter fireFighter : firefighter) { - if (fireFighter.getFireFighterPosition().equals(position)) { - firefighter.remove(position); - break; - } + if (!getFireFighterPositions(this.firefighters).remove(position)) break; + } + for (ModelElement element : state) { + switch (element) { + case FIRE -> fires.add(new Fire(position)); + case FIREFIGHTER -> firefighters.add(new FireFighter(position)); } + } + } - for (ModelElement element : state) { - switch (element) { - case FIRE -> fire.add(new Fire(position)); - case FIREFIGHTER -> firefighter.add(new FireFighter(position)); - } - } + + + public Set<Position> getFirePositions(Set<Fire> fireSet){ + Set<Position> firePositions = new HashSet<>(); + for(Fire fire : fireSet){ + firePositions.add(fire.getPosition()); + } + return firePositions; + } + + + public ArrayList<Position> getFireFighterPositions(List<FireFighter> fireFighterList){ + ArrayList<Position> fireFighterPositions = new ArrayList<>(); + for(FireFighter fireFighter : fireFighterList){ + fireFighterPositions.add(fireFighter.getPosition()); } + return fireFighterPositions; } + + } \ No newline at end of file diff --git a/src/main/java/module-info.java b/src/main/java/module-info.java index 4c36d97..7317081 100644 --- a/src/main/java/module-info.java +++ b/src/main/java/module-info.java @@ -4,5 +4,6 @@ module firefighter { requires javafx.graphics; opens controller to javafx.fxml; exports app; + exports view; opens app to javafx.fxml; } -- GitLab