diff --git a/src/main/java/model/BoardElement.java b/src/main/java/model/BoardElement.java index 912a524ab8f5b87c0cd646e7ee97d02544e98e51..d81bfbd960bea825dada024453bb4f9e81f8a433 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 8301d6e0305fc8d958bb64c04d138c0ad973ea78..0000000000000000000000000000000000000000 --- 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 b9d56c631693b8d5383b23a8d278dcade6fbf929..0000000000000000000000000000000000000000 --- 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 91e7ccf29f20745e2601a919a6391f2158fb13d7..0000000000000000000000000000000000000000 --- 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 0000000000000000000000000000000000000000..5fa1c31b671d246b8662185ede204bd7504d7407 --- /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 0000000000000000000000000000000000000000..077f3cca3edfecb1491a8fb6d22ccf2d3ed50524 --- /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 0000000000000000000000000000000000000000..1cbeb2662caae6cdf04d375b208006d8ee6f279f --- /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 e202215711af31838c048b882230d900969a941a..ef4d68ee00907de06dd030dc354df6e6f4e154cc 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 2d0b03048f701e29ad8314836efb12fb6537d22e..7fa8e1d1e72a765eed8f98ea970b407d50e2137a 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 621ab15ae60f0b6bb6efa4369536f263daeb5566..0d1f6ace5efb0438bff64eeb0a1eb6907b8439f3 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 b17a5509556b363b8ca7753e183b60df44469b2b..2040c734b627cb82034645d3deb4dd23ec2774cd 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 0000000000000000000000000000000000000000..a5ace1e985091d08fc5c72f140ec013e25004578 --- /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 fc8290ad64a103e9ac78ed571720ac51e55defcb..c1cc3cd94179786e60ab4183e34b820fd37bc23c 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 288af45085d83abed059642b9ddf34a4e2377198..bc8097d1d97cc51209fee1c1b7ed6ddf8c707e48 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 cf53acf322cc562e77338bc2ad48c491e2097d85..4a0f710dbaee13ab9a6da545501df32b23e895c1 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 7e7ce43771fb2b4503e6c666c8ba49a16eada7f6..3718c615c60117d69188f90e6ebd628db2faefd8 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 da5b1a222d9c24946e95e7ade64a596f4a099f93..5a324d1942b57410f4d084e7d995efac6a300c95 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;