From bc0be0e0b8824086f1e3d84bf840a514fc45a5c5 Mon Sep 17 00:00:00 2001 From: mohamed Hebbache <mohamed.hebbache@etu.univ-amu.fr> Date: Tue, 14 Nov 2023 21:54:13 +0100 Subject: [PATCH] Initialise Fire and FireFighter --- src/main/java/model/BoardElement.java | 1 - src/main/java/model/ExtenguishFire/Cloud.java | 4 -- .../model/ExtenguishFire/FireFighter.java | 4 -- .../model/ExtenguishFire/FireFighters.java | 11 ---- src/main/java/model/ExtinguishFire/Cloud.java | 4 ++ .../model/ExtinguishFire/ExtinguishFire.java | 16 +++++ .../model/ExtinguishFire/FireFighter.java | 63 +++++++++++++++++++ .../MotorizedFireFighter.java | 2 +- src/main/java/model/FirefighterBoard.java | 1 - src/main/java/model/Flammable/Fire.java | 61 +++++++----------- .../Flammable/{Fires.java => Flammable.java} | 9 +-- src/main/java/model/GameBoard.java | 57 +++++++++++++++++ src/main/java/model/Obstacle/Obstacles.java | 3 +- .../java/model/Visitor/CrossMountain.java | 4 +- src/main/java/model/Visitor/CrossRoad.java | 4 +- src/main/java/model/Visitor/FireFinder.java | 4 +- src/main/java/model/Visitor/Visitor.java | 5 +- 17 files changed, 176 insertions(+), 77 deletions(-) delete mode 100644 src/main/java/model/ExtenguishFire/Cloud.java delete mode 100644 src/main/java/model/ExtenguishFire/FireFighter.java delete mode 100644 src/main/java/model/ExtenguishFire/FireFighters.java create mode 100644 src/main/java/model/ExtinguishFire/Cloud.java create mode 100644 src/main/java/model/ExtinguishFire/ExtinguishFire.java create mode 100644 src/main/java/model/ExtinguishFire/FireFighter.java rename src/main/java/model/{ExtenguishFire => ExtinguishFire}/MotorizedFireFighter.java (56%) rename src/main/java/model/Flammable/{Fires.java => Flammable.java} (55%) create mode 100644 src/main/java/model/GameBoard.java diff --git a/src/main/java/model/BoardElement.java b/src/main/java/model/BoardElement.java index 912a524..d81bfbd 100644 --- a/src/main/java/model/BoardElement.java +++ b/src/main/java/model/BoardElement.java @@ -12,7 +12,6 @@ import java.util.Set; public interface BoardElement { Color getColor(); - void setColor(Color color); Boolean accept(Visitor visitor); void initialize(int initialElementCount, HashMap<Position, ArrayList<BoardElement>> elementPosition); } diff --git a/src/main/java/model/ExtenguishFire/Cloud.java b/src/main/java/model/ExtenguishFire/Cloud.java deleted file mode 100644 index 8301d6e..0000000 --- a/src/main/java/model/ExtenguishFire/Cloud.java +++ /dev/null @@ -1,4 +0,0 @@ -package model.ExtenguishFire; - -public class Cloud { -} diff --git a/src/main/java/model/ExtenguishFire/FireFighter.java b/src/main/java/model/ExtenguishFire/FireFighter.java deleted file mode 100644 index b9d56c6..0000000 --- a/src/main/java/model/ExtenguishFire/FireFighter.java +++ /dev/null @@ -1,4 +0,0 @@ -package model.ExtenguishFire; - -public class FireFighter { -} diff --git a/src/main/java/model/ExtenguishFire/FireFighters.java b/src/main/java/model/ExtenguishFire/FireFighters.java deleted file mode 100644 index 91e7ccf..0000000 --- a/src/main/java/model/ExtenguishFire/FireFighters.java +++ /dev/null @@ -1,11 +0,0 @@ -package model.ExtenguishFire; - -import model.BoardElement; -import util.Position; - -import java.util.List; - -public interface FireFighters extends BoardElement { - List<Position> updateFirefighters(); - boolean accept(); -} diff --git a/src/main/java/model/ExtinguishFire/Cloud.java b/src/main/java/model/ExtinguishFire/Cloud.java new file mode 100644 index 0000000..5fa1c31 --- /dev/null +++ b/src/main/java/model/ExtinguishFire/Cloud.java @@ -0,0 +1,4 @@ +package model.ExtinguishFire; + +public class Cloud { +} diff --git a/src/main/java/model/ExtinguishFire/ExtinguishFire.java b/src/main/java/model/ExtinguishFire/ExtinguishFire.java new file mode 100644 index 0000000..077f3cc --- /dev/null +++ b/src/main/java/model/ExtinguishFire/ExtinguishFire.java @@ -0,0 +1,16 @@ +package model.ExtinguishFire; + +import model.BoardElement; +import util.Position; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + +public interface ExtinguishFire extends BoardElement { + + void initialize(int initialFireFighterCount, HashMap<Position, ArrayList<BoardElement>> elementPosition); + + List<Position> updateFirefighters(); + +} diff --git a/src/main/java/model/ExtinguishFire/FireFighter.java b/src/main/java/model/ExtinguishFire/FireFighter.java new file mode 100644 index 0000000..1cbeb26 --- /dev/null +++ b/src/main/java/model/ExtinguishFire/FireFighter.java @@ -0,0 +1,63 @@ +package model.ExtinguishFire; + +import javafx.scene.paint.Color; +import model.BoardElement; +import model.FirefighterBoard; +import model.Flammable.Fire; +import model.Visitor.FireFinder; +import model.Visitor.Visitor; +import util.Position; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + +public class FireFighter implements ExtinguishFire{ + Color color; + public FireFighter(Color color){ + this.color=color; + } + @Override + public Color getColor() { + return color; + } + + @Override + public Boolean accept(Visitor visitor) { + return visitor.visit(this); + } + + @Override + public void initialize(int initialFireFighterCount, HashMap<Position, ArrayList<BoardElement>> elementPosition) { + FireFinder fireFinder=new FireFinder(); + Position position = FirefighterBoard.randomPosition(); + boolean canInitialise; + for (int index = 0; index < initialFireFighterCount; index++) { + if(elementPosition.containsKey(position)) { + for (;;) { + canInitialise = true; + for (BoardElement element : elementPosition.get(position)) { + if (element.accept(fireFinder)) { + canInitialise=false; + break; + } + } + if(canInitialise){ + break; + } + position = FirefighterBoard.randomPosition(); + } + elementPosition.get(position).add(new Fire(Color.BLUE)); + continue; + } + ArrayList<BoardElement> boardElements = new ArrayList<>(); + boardElements.add(new Fire(Color.BLUE)); + elementPosition.put(position,boardElements); + } + } + + @Override + public List<Position> updateFirefighters() { + return null; + } +} diff --git a/src/main/java/model/ExtenguishFire/MotorizedFireFighter.java b/src/main/java/model/ExtinguishFire/MotorizedFireFighter.java similarity index 56% rename from src/main/java/model/ExtenguishFire/MotorizedFireFighter.java rename to src/main/java/model/ExtinguishFire/MotorizedFireFighter.java index e202215..ef4d68e 100644 --- a/src/main/java/model/ExtenguishFire/MotorizedFireFighter.java +++ b/src/main/java/model/ExtinguishFire/MotorizedFireFighter.java @@ -1,4 +1,4 @@ -package model.ExtenguishFire; +package model.ExtinguishFire; public class MotorizedFireFighter { } diff --git a/src/main/java/model/FirefighterBoard.java b/src/main/java/model/FirefighterBoard.java index 2d0b030..7fa8e1d 100644 --- a/src/main/java/model/FirefighterBoard.java +++ b/src/main/java/model/FirefighterBoard.java @@ -10,7 +10,6 @@ public class FirefighterBoard implements Board<List<ModelElement>> { static int rowCount; private final int initialFireCount; private final int initialFirefighterCount; - protected HashMap<Position,ArrayList<BoardElement>> elementPosition; private List<Position> firefighterPositions; private Set<Position> firePositions; private int step = 0; diff --git a/src/main/java/model/Flammable/Fire.java b/src/main/java/model/Flammable/Fire.java index 621ab15..0d1f6ac 100644 --- a/src/main/java/model/Flammable/Fire.java +++ b/src/main/java/model/Flammable/Fire.java @@ -9,12 +9,10 @@ import util.Position; import java.util.*; -public class Fire implements Fires{ +public class Fire implements Flammable{ - private Color color; + private final Color color; - public Fire(){ - } public Fire(Color color){ this.color = color; } @@ -24,11 +22,6 @@ public class Fire implements Fires{ return this.color; } - @Override - public void setColor(Color color) { - this.color = color; - } - @Override public Boolean accept(Visitor visitor){ return visitor.visit(this); @@ -38,42 +31,34 @@ public class Fire implements Fires{ public void initialize(int initialFireCount, HashMap<Position, ArrayList<BoardElement>> elementPosition) { FireFinder fireFinder=new FireFinder(); Position position = FirefighterBoard.randomPosition(); - int index; - for ( index = 0; index < initialFireCount; index++) { - if(elementPosition.containsKey(position) ) { - for (BoardElement element : elementPosition.get(position)) { - if (!element.accept(fireFinder)) { + boolean canInitialise; + for (int index = 0; index < initialFireCount; index++) { + if(elementPosition.containsKey(position)) { + for (;;) { + canInitialise=true; + for (BoardElement element : elementPosition.get(position)) { + if (element.accept(fireFinder)) { + canInitialise=false; + break; + } + } + if(canInitialise){ break; } - } - if(index==-1){ - elementPosition.get(position).add(new Fire()); + position = FirefighterBoard.randomPosition(); + } + elementPosition.get(position).add(new Fire(Color.RED)); + continue; } + ArrayList<BoardElement> boardElements = new ArrayList<>(); + boardElements.add(new Fire(Color.RED)); + elementPosition.put(position,boardElements); } - else{ - ArrayList<BoardElement> boardElements = new ArrayList<>(); - boardElements.add(new Fire()); - elementPosition.put(position,boardElements); - } - } } - /*if(elementPosition.containsKey(position) && ){ - continue; - } - else if(elementPosition.containsKey(position)){ - elementPosition.get(position).add(fire); - } - else{ - ArrayList<BoardElement> boardElements = new ArrayList<>(); - boardElements.add(fire); - elementPosition.put(position,boardElements); - } - } - }*/ - @Override - public List<Position> updateFires() { + public List<Position> updateFlammable() { return null; } + } diff --git a/src/main/java/model/Flammable/Fires.java b/src/main/java/model/Flammable/Flammable.java similarity index 55% rename from src/main/java/model/Flammable/Fires.java rename to src/main/java/model/Flammable/Flammable.java index b17a550..2040c73 100644 --- a/src/main/java/model/Flammable/Fires.java +++ b/src/main/java/model/Flammable/Flammable.java @@ -1,20 +1,15 @@ package model.Flammable; -import javafx.scene.paint.Color; import model.BoardElement; -import model.Visitor.Visitor; import util.Position; import java.util.ArrayList; import java.util.HashMap; import java.util.List; -public interface Fires extends BoardElement{ - void setColor(Color color); - - Boolean accept(Visitor visitor); +public interface Flammable extends BoardElement{ void initialize(int initialFireCount, HashMap<Position, ArrayList<BoardElement>> elementPosition); - List<Position> updateFires(); + List<Position> updateFlammable(); } diff --git a/src/main/java/model/GameBoard.java b/src/main/java/model/GameBoard.java new file mode 100644 index 0000000..a5ace1e --- /dev/null +++ b/src/main/java/model/GameBoard.java @@ -0,0 +1,57 @@ +package model; + +import util.Position; + +import java.util.*; + +public class GameBoard implements Board{ + static int columnCount; + static int rowCount; + private final int initialFireCount; + private final int initialFirefighterCount; + private List<Position> firefighterPositions; + private Set<Position> firePositions; + private int step = 0; + static Random randomGenerator = new Random(); + public HashMap<Position, ArrayList<BoardElement>> elementPosition; + + public GameBoard(int initialFireCount, int initialFirefighterCount) { + this.initialFireCount = initialFireCount; + this.initialFirefighterCount = initialFirefighterCount; + } + + @Override + public Object getState(Position position) { + return null; + } + + @Override + public void setState(Object state, Position position) { + + } + + @Override + public int rowCount() { + return rowCount; + } + + @Override + public int columnCount() { + return columnCount; + } + + @Override + public List<Position> updateToNextGeneration() { + return null; + } + + @Override + public void reset() { + + } + + @Override + public int stepNumber() { + return step; + } +} diff --git a/src/main/java/model/Obstacle/Obstacles.java b/src/main/java/model/Obstacle/Obstacles.java index fc8290a..c1cc3cd 100644 --- a/src/main/java/model/Obstacle/Obstacles.java +++ b/src/main/java/model/Obstacle/Obstacles.java @@ -6,5 +6,6 @@ import util.Position; import java.util.List; public interface Obstacles extends BoardElement { - boolean accept(); + + } diff --git a/src/main/java/model/Visitor/CrossMountain.java b/src/main/java/model/Visitor/CrossMountain.java index 288af45..bc8097d 100644 --- a/src/main/java/model/Visitor/CrossMountain.java +++ b/src/main/java/model/Visitor/CrossMountain.java @@ -1,7 +1,7 @@ package model.Visitor; -import model.ExtenguishFire.FireFighter; -import model.ExtenguishFire.MotorizedFireFighter; +import model.ExtinguishFire.FireFighter; +import model.ExtinguishFire.MotorizedFireFighter; import model.Flammable.Fire; import model.Obstacle.Mountain; import model.Obstacle.Road; diff --git a/src/main/java/model/Visitor/CrossRoad.java b/src/main/java/model/Visitor/CrossRoad.java index cf53acf..4a0f710 100644 --- a/src/main/java/model/Visitor/CrossRoad.java +++ b/src/main/java/model/Visitor/CrossRoad.java @@ -1,7 +1,7 @@ package model.Visitor; -import model.ExtenguishFire.FireFighter; -import model.ExtenguishFire.MotorizedFireFighter; +import model.ExtinguishFire.FireFighter; +import model.ExtinguishFire.MotorizedFireFighter; import model.Flammable.Fire; import model.Obstacle.Mountain; import model.Obstacle.Road; diff --git a/src/main/java/model/Visitor/FireFinder.java b/src/main/java/model/Visitor/FireFinder.java index 7e7ce43..3718c61 100644 --- a/src/main/java/model/Visitor/FireFinder.java +++ b/src/main/java/model/Visitor/FireFinder.java @@ -1,7 +1,7 @@ package model.Visitor; -import model.ExtenguishFire.FireFighter; -import model.ExtenguishFire.MotorizedFireFighter; +import model.ExtinguishFire.FireFighter; +import model.ExtinguishFire.MotorizedFireFighter; import model.Flammable.Fire; import model.Obstacle.Mountain; import model.Obstacle.Road; diff --git a/src/main/java/model/Visitor/Visitor.java b/src/main/java/model/Visitor/Visitor.java index da5b1a2..5a324d1 100644 --- a/src/main/java/model/Visitor/Visitor.java +++ b/src/main/java/model/Visitor/Visitor.java @@ -1,9 +1,8 @@ package model.Visitor; -import model.ExtenguishFire.FireFighter; -import model.ExtenguishFire.MotorizedFireFighter; +import model.ExtinguishFire.FireFighter; +import model.ExtinguishFire.MotorizedFireFighter; import model.Flammable.Fire; -import model.Flammable.Fires; import model.Obstacle.Mountain; import model.Obstacle.Road; -- GitLab