diff --git a/.gradle/8.4/executionHistory/executionHistory.bin b/.gradle/8.4/executionHistory/executionHistory.bin index cd185bc582a0f489888b574664842f97427b3965..14de053e2be6fbb2ca7891822fcb1d5eb3ead8d2 100644 Binary files a/.gradle/8.4/executionHistory/executionHistory.bin and b/.gradle/8.4/executionHistory/executionHistory.bin differ diff --git a/.gradle/8.4/executionHistory/executionHistory.lock b/.gradle/8.4/executionHistory/executionHistory.lock index b0eb98842eda3fa8e9d6fde7acfb58ee0504e7c4..c87fcc9349a2ef81dfe68895e7011b540ebe0730 100644 Binary files a/.gradle/8.4/executionHistory/executionHistory.lock and b/.gradle/8.4/executionHistory/executionHistory.lock differ diff --git a/.gradle/8.4/fileHashes/fileHashes.bin b/.gradle/8.4/fileHashes/fileHashes.bin index a6033345fa086c28fa693303e7b630d6d3d901cb..ee1911fe5301189769c38cd829c3ffe30c08f0a9 100644 Binary files a/.gradle/8.4/fileHashes/fileHashes.bin and b/.gradle/8.4/fileHashes/fileHashes.bin differ diff --git a/.gradle/8.4/fileHashes/fileHashes.lock b/.gradle/8.4/fileHashes/fileHashes.lock index da13ab9353ced83645c5559a785a24c30dd34000..a6b915a90cb046cfc12791a367d93eeb30bd8cf0 100644 Binary files a/.gradle/8.4/fileHashes/fileHashes.lock and b/.gradle/8.4/fileHashes/fileHashes.lock differ diff --git a/.gradle/8.4/fileHashes/resourceHashesCache.bin b/.gradle/8.4/fileHashes/resourceHashesCache.bin index 140ab407c66bf092f43e885dfedaf6efe6f82fea..6cd79388e76bb5f34544f1b41604251d8437dcb1 100644 Binary files a/.gradle/8.4/fileHashes/resourceHashesCache.bin and b/.gradle/8.4/fileHashes/resourceHashesCache.bin differ diff --git a/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/.gradle/buildOutputCleanup/buildOutputCleanup.lock index 72a5e081814c347e779fc9a70999b4a39d950740..7903126a0dcdbfde39041e8a6de5812e36679bf7 100644 Binary files a/.gradle/buildOutputCleanup/buildOutputCleanup.lock and b/.gradle/buildOutputCleanup/buildOutputCleanup.lock differ diff --git a/.gradle/buildOutputCleanup/outputFiles.bin b/.gradle/buildOutputCleanup/outputFiles.bin index e4dbcd26775b77fdd318f2e906aa0ebb05955632..9950dc5e73e58206fe7f141e701e984fedcc0ab0 100644 Binary files a/.gradle/buildOutputCleanup/outputFiles.bin and b/.gradle/buildOutputCleanup/outputFiles.bin differ diff --git a/.gradle/file-system.probe b/.gradle/file-system.probe index e892a491542e10fac2c062d573d9d0cd0dc4280c..d9291c52f11415278b548b676f495d34ee06357e 100644 Binary files a/.gradle/file-system.probe and b/.gradle/file-system.probe differ diff --git a/build/classes/java/main/app/SimulatorApplication.class b/build/classes/java/main/app/SimulatorApplication.class index b20b834ef489ed0cfcf6f12e7993b40632a049e9..2792d63b92517bb76234c95f54d1ac8669770999 100644 Binary files a/build/classes/java/main/app/SimulatorApplication.class and b/build/classes/java/main/app/SimulatorApplication.class differ diff --git a/build/classes/java/main/controller/Controller.class b/build/classes/java/main/controller/Controller.class index 181db60987ef9e8df666c370fc44325db0cb5a41..74013efab5e05f9243deca053906751ea238f241 100644 Binary files a/build/classes/java/main/controller/Controller.class and b/build/classes/java/main/controller/Controller.class differ diff --git a/build/classes/java/main/model/Builder/FireFirefighterBuilder.class b/build/classes/java/main/model/Builder/FireFirefighterBuilder.class deleted file mode 100644 index 3b2ad97b21e91b398e478584610878b453c607cf..0000000000000000000000000000000000000000 Binary files a/build/classes/java/main/model/Builder/FireFirefighterBuilder.class and /dev/null differ diff --git a/build/classes/java/main/model/Builder/GameManage.class b/build/classes/java/main/model/Builder/GameManage.class index 2720adbd99507a45b7ab9771d0535a07fb653449..af3536b151a408b96923e5356e098c9e646509d4 100644 Binary files a/build/classes/java/main/model/Builder/GameManage.class and b/build/classes/java/main/model/Builder/GameManage.class differ diff --git a/build/classes/java/main/model/ExtinguishFire/Cloud.class b/build/classes/java/main/model/ExtinguishFire/Cloud.class index 9de56c2328937cd36048ec37406dc9240e0c39b7..dd940b0174a4a149abcf9599d409366672fda4e4 100644 Binary files a/build/classes/java/main/model/ExtinguishFire/Cloud.class and b/build/classes/java/main/model/ExtinguishFire/Cloud.class differ diff --git a/build/classes/java/main/model/Flammable/Fire.class b/build/classes/java/main/model/Flammable/Fire.class index a63719c958047acc25830722191a24670a97cbad..c26b25067e3470b44d70d004d5f4c57388352c7a 100644 Binary files a/build/classes/java/main/model/Flammable/Fire.class and b/build/classes/java/main/model/Flammable/Fire.class differ diff --git a/build/classes/java/main/model/GameBoard.class b/build/classes/java/main/model/GameBoard.class index e7f7e68c6824b75a0258c2c6ecb4cd1b9dee4da3..9a2ab100b7a3ff1b6282d6ac48938001da2a7bdb 100644 Binary files a/build/classes/java/main/model/GameBoard.class and b/build/classes/java/main/model/GameBoard.class differ diff --git a/build/classes/java/main/model/Visitor/CrossMountain.class b/build/classes/java/main/model/Visitor/CrossMountain.class index ddbfddb8f7cee6c257ddbd45252852a741b3db40..69f63f7cd3d38ef2cee410a9416eee60dd7cfd4f 100644 Binary files a/build/classes/java/main/model/Visitor/CrossMountain.class and b/build/classes/java/main/model/Visitor/CrossMountain.class differ diff --git a/build/classes/java/main/model/Visitor/CrossRoad.class b/build/classes/java/main/model/Visitor/CrossRoad.class index ee0df02352663a36d691bb3081a31d94c5028c0d..6846553e8ac3d3e4fee6d99e85266f45c4b7a798 100644 Binary files a/build/classes/java/main/model/Visitor/CrossRoad.class and b/build/classes/java/main/model/Visitor/CrossRoad.class differ diff --git a/build/classes/java/main/model/Visitor/FireFinder.class b/build/classes/java/main/model/Visitor/FireFinder.class index 05ddcb141f461b8f1e4f42cb7b2c32083b234b7f..3eee0b6a9e0b6ef841b3a41e019f5871a34211a8 100644 Binary files a/build/classes/java/main/model/Visitor/FireFinder.class and b/build/classes/java/main/model/Visitor/FireFinder.class differ diff --git a/build/classes/java/main/model/Visitor/Visitor.class b/build/classes/java/main/model/Visitor/Visitor.class index d9ae8e3a8a6375c074840b3b24e35ce02a6d6b1e..6bda2c96ed0d078985d77b993144828ec7de1b9c 100644 Binary files a/build/classes/java/main/model/Visitor/Visitor.class and b/build/classes/java/main/model/Visitor/Visitor.class differ diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/Controller.class.uniqueId6 b/build/tmp/compileJava/compileTransaction/stash-dir/Controller.class.uniqueId6 index 8354b4b5e9c51c9a95e1ee282454bcb74bb2799f..74013efab5e05f9243deca053906751ea238f241 100644 Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/Controller.class.uniqueId6 and b/build/tmp/compileJava/compileTransaction/stash-dir/Controller.class.uniqueId6 differ diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/CrossMountain.class.uniqueId9 b/build/tmp/compileJava/compileTransaction/stash-dir/CrossMountain.class.uniqueId9 index ddbfddb8f7cee6c257ddbd45252852a741b3db40..69f63f7cd3d38ef2cee410a9416eee60dd7cfd4f 100644 Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/CrossMountain.class.uniqueId9 and b/build/tmp/compileJava/compileTransaction/stash-dir/CrossMountain.class.uniqueId9 differ diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/CrossRoad.class.uniqueId2 b/build/tmp/compileJava/compileTransaction/stash-dir/CrossRoad.class.uniqueId2 index ee0df02352663a36d691bb3081a31d94c5028c0d..6846553e8ac3d3e4fee6d99e85266f45c4b7a798 100644 Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/CrossRoad.class.uniqueId2 and b/build/tmp/compileJava/compileTransaction/stash-dir/CrossRoad.class.uniqueId2 differ diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/ExtinguishFire.class.uniqueId0 b/build/tmp/compileJava/compileTransaction/stash-dir/ExtinguishFire.class.uniqueId0 index 6f2ee628168d8278cdfdfcd6b1dcf054d0de7134..a4d622e74ad0dac8a1e1ee24f055fadd19df68df 100644 Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/ExtinguishFire.class.uniqueId0 and b/build/tmp/compileJava/compileTransaction/stash-dir/ExtinguishFire.class.uniqueId0 differ diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/Fire.class.uniqueId7 b/build/tmp/compileJava/compileTransaction/stash-dir/Fire.class.uniqueId7 index dbc166e9ee502ac6e65765ab6e3c1b154cd63a20..c26b25067e3470b44d70d004d5f4c57388352c7a 100644 Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/Fire.class.uniqueId7 and b/build/tmp/compileJava/compileTransaction/stash-dir/Fire.class.uniqueId7 differ diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/FireFighter.class.uniqueId12 b/build/tmp/compileJava/compileTransaction/stash-dir/FireFighter.class.uniqueId12 index fcc4ef03eff562cb121ef55794860a3daacf0c37..02776eb6f209146e6f2de1891a6ecafbc4aa688a 100644 Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/FireFighter.class.uniqueId12 and b/build/tmp/compileJava/compileTransaction/stash-dir/FireFighter.class.uniqueId12 differ diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/FireFinder.class.uniqueId10 b/build/tmp/compileJava/compileTransaction/stash-dir/FireFinder.class.uniqueId10 index 05ddcb141f461b8f1e4f42cb7b2c32083b234b7f..3eee0b6a9e0b6ef841b3a41e019f5871a34211a8 100644 Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/FireFinder.class.uniqueId10 and b/build/tmp/compileJava/compileTransaction/stash-dir/FireFinder.class.uniqueId10 differ diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/FirefighterGrid.class.uniqueId3 b/build/tmp/compileJava/compileTransaction/stash-dir/FirefighterGrid.class.uniqueId3 index 30eaace75e76ed424baa17b60e2fc62e70bead04..d2bbe7e11dd4d28c3fba73284af14ce15b59f73f 100644 Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/FirefighterGrid.class.uniqueId3 and b/build/tmp/compileJava/compileTransaction/stash-dir/FirefighterGrid.class.uniqueId3 differ diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/Flammable.class.uniqueId1 b/build/tmp/compileJava/compileTransaction/stash-dir/Flammable.class.uniqueId1 index 4a62fd7300bf6f83c5e5d56996109e985f2f0393..bf120cd5de3e083cfef4bb7079bfbbbd2f05fb97 100644 Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/Flammable.class.uniqueId1 and b/build/tmp/compileJava/compileTransaction/stash-dir/Flammable.class.uniqueId1 differ diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/GameBoard.class.uniqueId14 b/build/tmp/compileJava/compileTransaction/stash-dir/GameBoard.class.uniqueId14 deleted file mode 100644 index 1244bf4abf2ffc41960daa3df90f9d5147ada260..0000000000000000000000000000000000000000 Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/GameBoard.class.uniqueId14 and /dev/null differ diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/GameManage.class.uniqueId4 b/build/tmp/compileJava/compileTransaction/stash-dir/GameManage.class.uniqueId4 index 2720adbd99507a45b7ab9771d0535a07fb653449..af3536b151a408b96923e5356e098c9e646509d4 100644 Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/GameManage.class.uniqueId4 and b/build/tmp/compileJava/compileTransaction/stash-dir/GameManage.class.uniqueId4 differ diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/Obstacles.class.uniqueId15 b/build/tmp/compileJava/compileTransaction/stash-dir/Obstacles.class.uniqueId15 deleted file mode 100644 index fff48ef4e9967a51eeca54cadce22b98a897ae4c..0000000000000000000000000000000000000000 Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/Obstacles.class.uniqueId15 and /dev/null differ diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/Visitor.class.uniqueId11 b/build/tmp/compileJava/compileTransaction/stash-dir/Visitor.class.uniqueId11 index d9ae8e3a8a6375c074840b3b24e35ce02a6d6b1e..6bda2c96ed0d078985d77b993144828ec7de1b9c 100644 Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/Visitor.class.uniqueId11 and b/build/tmp/compileJava/compileTransaction/stash-dir/Visitor.class.uniqueId11 differ diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/module-info.class.uniqueId16 b/build/tmp/compileJava/compileTransaction/stash-dir/module-info.class.uniqueId16 deleted file mode 100644 index 228b8be064ecf35c69bb788937ce7ff8ab50174e..0000000000000000000000000000000000000000 Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/module-info.class.uniqueId16 and /dev/null differ diff --git a/build/tmp/compileJava/previous-compilation-data.bin b/build/tmp/compileJava/previous-compilation-data.bin index 6a2c8311aad2bec86286b0f270caab2751d19e4b..4bd233e0eadb98e8fa5873e7b16630662e933ad2 100644 Binary files a/build/tmp/compileJava/previous-compilation-data.bin and b/build/tmp/compileJava/previous-compilation-data.bin differ diff --git a/src/main/java/app/SimulatorApplication.java b/src/main/java/app/SimulatorApplication.java index 2646eb7602accd2b174ae3a116377f828e0b1473..041f72627c390f7525ce054448a10d7d8c959086 100644 --- a/src/main/java/app/SimulatorApplication.java +++ b/src/main/java/app/SimulatorApplication.java @@ -19,6 +19,7 @@ public class SimulatorApplication extends javafx.application.Application { private static final int SQUARE_HEIGHT = 30; public static final int INITIAL_FIRE_COUNT = 3; public static final int INITIAL_FIREFIGHTER_COUNT = 6; + public static final int INITIAL_CLOUD_COUNT = 2; private Stage primaryStage; private Parent view; @@ -44,7 +45,7 @@ public class SimulatorApplication extends javafx.application.Application { view = loader.load(); Controller controller = loader.getController(); controller.initialize(SQUARE_WIDTH, SQUARE_HEIGHT, COLUMN_COUNT, ROW_COUNT, - INITIAL_FIRE_COUNT, INITIAL_FIREFIGHTER_COUNT); + INITIAL_FIRE_COUNT, INITIAL_FIREFIGHTER_COUNT, INITIAL_CLOUD_COUNT); } private void showScene() { diff --git a/src/main/java/controller/Controller.java b/src/main/java/controller/Controller.java index 81b9df828351be80fe30e3a28bb32a842ed3e72d..d816b1f58ace5ef866ba646e2166c90feeda0e2b 100644 --- a/src/main/java/controller/Controller.java +++ b/src/main/java/controller/Controller.java @@ -109,9 +109,9 @@ public class Controller { } public void initialize(int squareWidth, int squareHeight, int columnCount, - int rowCount, int initialFireCount, int initialFirefighterCount) { + int rowCount, int initialFireCount, int initialFirefighterCount,int initialCloudCount) { grid.setDimensions(columnCount, rowCount, squareWidth, squareHeight); - board = new GameBoard(rowCount,columnCount,initialFireCount,initialFirefighterCount); + board = new GameBoard(rowCount,columnCount,initialFireCount,initialFirefighterCount,initialCloudCount); board.initializeElements(); repaintGrid(); } diff --git a/src/main/java/model/Builder/FireFirefighterBuilder.java b/src/main/java/model/Builder/FireFirefightersBuilder.java similarity index 64% rename from src/main/java/model/Builder/FireFirefighterBuilder.java rename to src/main/java/model/Builder/FireFirefightersBuilder.java index 5af512c580daf48dd3a43f94d3dd962127381e29..13acd7a2cba7314bf7aa6fa090a30e35080c3022 100644 --- a/src/main/java/model/Builder/FireFirefighterBuilder.java +++ b/src/main/java/model/Builder/FireFirefightersBuilder.java @@ -1,11 +1,12 @@ package model.Builder; -public class FireFirefighterBuilder { - public void Build(int fires, int firefighters) { +public class FireFirefightersBuilder { + public void Build(int fires, int firefighters , int clouds) { ConcreteGameBuilder concreteGameBuilder; concreteGameBuilder =new ConcreteGameBuilder(); concreteGameBuilder.setFire(fires) .setFireFighter(firefighters) + .setCloud(clouds) .build(); } } diff --git a/src/main/java/model/Builder/GameManage.java b/src/main/java/model/Builder/GameManage.java index 2a8c2d8759b48eb74e604c441d473ab4fe3e7b86..3786c3ec6dbeca0da18eb791f415585d805d8486 100644 --- a/src/main/java/model/Builder/GameManage.java +++ b/src/main/java/model/Builder/GameManage.java @@ -1,6 +1,7 @@ package model.Builder; import javafx.scene.paint.Color; +import model.ExtinguishFire.Cloud; import model.ExtinguishFire.FireFighter; import model.Flammable.Fire; @@ -32,7 +33,7 @@ public class GameManage { new FireFighter(Color.BLUE); } for(int i=0;i<clouds;i++) { - //new Cloud(Color.GRAY); + new Cloud(Color.DARKBLUE); } // TODO: 15/11/2023 la suite .... aussi l'initialisation va changer dans fire et firefighter } diff --git a/src/main/java/model/ExtinguishFire/Cloud.java b/src/main/java/model/ExtinguishFire/Cloud.java index 5fa1c31b671d246b8662185ede204bd7504d7407..a4fcfb406dd9776d69f0a9540755a249baf08ce5 100644 --- a/src/main/java/model/ExtinguishFire/Cloud.java +++ b/src/main/java/model/ExtinguishFire/Cloud.java @@ -1,4 +1,74 @@ package model.ExtinguishFire; -public class Cloud { +import javafx.scene.paint.Color; +import model.BoardElement; +import model.GameBoard; +import model.Visitor.FireFinder; +import model.Visitor.Visitor; +import util.Position; + +import java.util.*; + +import static model.GameBoard.elementPosition; +import static model.GameBoard.randomPosition; + +public class Cloud implements ExtinguishFire{ + + Color color; + + public Cloud(Color color){ + this.color=color; + initialize(); + } + @Override + public Color getColor() { + return color; + } + + @Override + public Boolean accept(Visitor visitor) { + return visitor.visit(this); + } + + @Override + public void initialize() { + Position position = GameBoard.randomPosition(); + if (elementPosition.containsKey(position)) + elementPosition.get(position).add(this); + else { + ArrayList<BoardElement> boardElements = new ArrayList<>(); + boardElements.add(this); + elementPosition.put(position, boardElements); + } + } + + @Override + public void update(GameBoard gameBoard, Position position, HashMap<Position, ArrayList<BoardElement>> newElementPosition, ArrayList<Position> extinguishPosition) { + List<Position> firePositions = new ArrayList<>(); + for (Map.Entry<Position, ArrayList<BoardElement>> entry : elementPosition.entrySet()) { + for (BoardElement element : entry.getValue()) { + if (element.accept(new FireFinder())) { + firePositions.add(entry.getKey()); + } + } + } + List<Position> neighbors = gameBoard.neighbors(position); + Random random = new Random(); + int randomIndex = random.nextInt(neighbors.size()); + Position newFirefighterPosition = neighbors.get(randomIndex); + if(newElementPosition.containsKey(newFirefighterPosition)){ + newElementPosition.get(newFirefighterPosition).add(this); + } + else{ + ArrayList<BoardElement> boardElements = new ArrayList<>(); + boardElements.add(this); + newElementPosition.put(newFirefighterPosition,boardElements); + } + extinguishPosition.add(newFirefighterPosition); + List<Position> neighborFirePositions = gameBoard.neighbors(newFirefighterPosition).stream() + .filter(firePositions::contains).toList(); + for(Position firePosition : neighborFirePositions) { + extinguishPosition.add(firePosition); + } + } } diff --git a/src/main/java/model/ExtinguishFire/FireFighter.java b/src/main/java/model/ExtinguishFire/FireFighter.java index 060a5de7a4397caf1b72ce6fb7af84db03dcf117..73e882fcd02475c97582e1ae6cffa1d7e8098679 100644 --- a/src/main/java/model/ExtinguishFire/FireFighter.java +++ b/src/main/java/model/ExtinguishFire/FireFighter.java @@ -37,7 +37,7 @@ public class FireFighter implements ExtinguishFire { boolean canInitialise; Position position = GameBoard.randomPosition(); if(elementPosition.containsKey(position)) { - for (; ; ) { + for (;;) { canInitialise = true; for (BoardElement element : elementPosition.get(position)) { if (element.accept(crossMountain)) { diff --git a/src/main/java/model/Flammable/Fire.java b/src/main/java/model/Flammable/Fire.java index a37e88732c89ec6a270597877b45723785d2234c..41190fc1af9fc6ae1ae108f36d14efbfdec2813a 100644 --- a/src/main/java/model/Flammable/Fire.java +++ b/src/main/java/model/Flammable/Fire.java @@ -95,11 +95,12 @@ public class Fire implements Flammable{ ArrayList<BoardElement> boardElements = new ArrayList<>(); boardElements.add(this); newElementPosition.put(newPosition,boardElements); - System.out.println(GameBoard.elementPosition.get(position).get(0).getColor()); + //System.out.println(GameBoard.elementPosition.get(position).get(0).getColor()); } } - }else{ + } + else{ if(newElementPosition.containsKey(position)) newElementPosition.get(position).add(this); else { diff --git a/src/main/java/model/GameBoard.java b/src/main/java/model/GameBoard.java index 5b4773cbdde757e725dbe13b2a7d4733c4f9c6d0..4795d8cfa054712ed8a7ecd6eea597a4422c69c1 100644 --- a/src/main/java/model/GameBoard.java +++ b/src/main/java/model/GameBoard.java @@ -1,6 +1,6 @@ package model; -import model.Builder.FireFirefighterBuilder; +import model.Builder.FireFirefightersBuilder; import model.Builder.GameManage; import model.ExtinguishFire.ExtinguishFire; import model.Flammable.Flammable; @@ -14,6 +14,7 @@ public class GameBoard implements Board{ static int rowCount; private int initialFireCount; private int initialFirefighterCount; + private int initialCloudCount; private int step = 0; static Random randomGenerator = new Random(); @@ -23,16 +24,17 @@ public class GameBoard implements Board{ public static HashMap<Position, ArrayList<BoardElement>> elementPosition=new HashMap<>(); - public GameBoard(int columnCount,int rowCount,int initialFireCount, int initialFirefighterCount) { + public GameBoard(int columnCount,int rowCount,int initialFireCount, int initialFirefighterCount,int initialCloudCount) { this.columnCount = columnCount; this.rowCount = rowCount; this.initialFireCount = initialFireCount; this.initialFirefighterCount = initialFirefighterCount; + this.initialCloudCount = initialCloudCount; } public void initializeElements(){ - FireFirefighterBuilder fireFirefighterBuilder=new FireFirefighterBuilder(); - fireFirefighterBuilder.Build(this.initialFireCount,this.initialFirefighterCount); + FireFirefightersBuilder fireFirefighterBuilder=new FireFirefightersBuilder(); + fireFirefighterBuilder.Build(this.initialFireCount,this.initialFirefighterCount,this.initialCloudCount); } public static Position randomPosition() { diff --git a/src/main/java/model/Visitor/CrossMountain.java b/src/main/java/model/Visitor/CrossMountain.java index bc8097d1d97cc51209fee1c1b7ed6ddf8c707e48..79fdb61439896429e9c2a6a3f2046074ba76cbfa 100644 --- a/src/main/java/model/Visitor/CrossMountain.java +++ b/src/main/java/model/Visitor/CrossMountain.java @@ -1,5 +1,6 @@ package model.Visitor; +import model.ExtinguishFire.Cloud; import model.ExtinguishFire.FireFighter; import model.ExtinguishFire.MotorizedFireFighter; import model.Flammable.Fire; @@ -16,7 +17,8 @@ public class CrossMountain implements Visitor { public boolean visit(FireFighter fireFighter) { return false; } - + @Override + public boolean visit(Cloud cloud) {return true;} @Override public boolean visit(MotorizedFireFighter motorizedFireFighter) { return false; diff --git a/src/main/java/model/Visitor/CrossRoad.java b/src/main/java/model/Visitor/CrossRoad.java index 4a0f710dbaee13ab9a6da545501df32b23e895c1..b886335897981e4e319ac3e012eb470aff106da0 100644 --- a/src/main/java/model/Visitor/CrossRoad.java +++ b/src/main/java/model/Visitor/CrossRoad.java @@ -1,5 +1,6 @@ package model.Visitor; +import model.ExtinguishFire.Cloud; import model.ExtinguishFire.FireFighter; import model.ExtinguishFire.MotorizedFireFighter; import model.Flammable.Fire; @@ -17,11 +18,16 @@ public class CrossRoad implements Visitor { return true; } + @Override + public boolean visit(Cloud cloud) {return true;} + @Override public boolean visit(MotorizedFireFighter motorizedFireFighter) { return true; } + + @Override public boolean visit(Mountain mountain) { return false; @@ -29,6 +35,6 @@ public class CrossRoad implements Visitor { @Override public boolean visit(Road road) { - return false; + return true; } } diff --git a/src/main/java/model/Visitor/FireFinder.java b/src/main/java/model/Visitor/FireFinder.java index 3718c615c60117d69188f90e6ebd628db2faefd8..dd8ed25a546046ad15ad60ad0000acd9c2ae4095 100644 --- a/src/main/java/model/Visitor/FireFinder.java +++ b/src/main/java/model/Visitor/FireFinder.java @@ -1,5 +1,6 @@ package model.Visitor; +import model.ExtinguishFire.Cloud; import model.ExtinguishFire.FireFighter; import model.ExtinguishFire.MotorizedFireFighter; import model.Flammable.Fire; @@ -17,6 +18,9 @@ public class FireFinder implements Visitor { return false; } + @Override + public boolean visit(Cloud cloud) {return false;} + @Override public boolean visit(MotorizedFireFighter motorizedFireFighter) { return false; diff --git a/src/main/java/model/Visitor/Visitor.java b/src/main/java/model/Visitor/Visitor.java index 5a324d1942b57410f4d084e7d995efac6a300c95..53cb66b6497e59ad15c9413fd55534bb849e5a3c 100644 --- a/src/main/java/model/Visitor/Visitor.java +++ b/src/main/java/model/Visitor/Visitor.java @@ -1,5 +1,6 @@ package model.Visitor; +import model.ExtinguishFire.Cloud; import model.ExtinguishFire.FireFighter; import model.ExtinguishFire.MotorizedFireFighter; import model.Flammable.Fire; @@ -10,6 +11,7 @@ public interface Visitor { boolean visit(Fire fire); boolean visit(FireFighter fireFighter); + boolean visit(Cloud cloud); boolean visit(MotorizedFireFighter motorizedFireFighter); boolean visit(Mountain mountain); boolean visit(Road road);