diff --git a/.gradle/8.4/executionHistory/executionHistory.bin b/.gradle/8.4/executionHistory/executionHistory.bin index 81b5312ec69c603ece8f764c927c12278b26d67d..f566d0aed52bf3de784fee4fc6c2202dde008dd2 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 fed675b3db9f36ef7395a0a5ffb336450d035f1c..b40c2038d7a08e222a9a7f42efbb97a641e2f7bd 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 3fa260536691562807ef07d92d2ccec3d636df02..fd8277fe82bb31de9e13670633c4083078e4ec89 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 a18dca04232dce609dccbc8459afd89d3026570e..96fa37fbb2ec393380611cf3004999ce72d2130f 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 3586e918043481013d80b92e993f2d4df464a23b..cd9c8b06f0cc4170c7dfb0c7e96412680139faee 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 19ae3ed2cd9f77999e0e183da6dfbecafe3f7794..5eaf3da50e8c5278410f413566655ae7dcad49b9 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 66b61460c12daabc04660b12d21a0c7ec81e4a0b..ddecbd9dd1debc0f290f449c8d48ca58af807e02 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 61fdfb6ad7742f6dad2de77278fbcb0877a3ea33..f8cb187624ffbb26d41258e3922aa23b160b14df 100644 Binary files a/.gradle/file-system.probe and b/.gradle/file-system.probe differ diff --git a/build/classes/java/main/controller/Controller.class b/build/classes/java/main/controller/Controller.class index d9275d02435beb2bc5c3fbb3c292ba1880c7deec..98ccf5787e8028794c9dcde0bc8d6b10007f2ab9 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/GameBuilder.class b/build/classes/java/main/model/Builder/GameBuilder.class index 1a08e360345d3bbfdd8b1a2bc287f17d1c4713ed..daa37805233ef32cff1cb5f8236a39e129f288de 100644 Binary files a/build/classes/java/main/model/Builder/GameBuilder.class and b/build/classes/java/main/model/Builder/GameBuilder.class differ diff --git a/build/classes/java/main/model/ExtinguishFire/Cloud.class b/build/classes/java/main/model/ExtinguishFire/Cloud.class index 5e1d4f55b67a31289f5bc99f64b1dee2a6591790..c1ac782b5f46bd7f37d2c4881517a34968693188 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/ExtinguishFire/ExtinguishFire.class b/build/classes/java/main/model/ExtinguishFire/ExtinguishFire.class deleted file mode 100644 index 567d4a02a156b9d882a255fecd3f2f6fec4a11ed..0000000000000000000000000000000000000000 Binary files a/build/classes/java/main/model/ExtinguishFire/ExtinguishFire.class and /dev/null differ diff --git a/build/classes/java/main/model/ExtinguishFire/FireFighter.class b/build/classes/java/main/model/ExtinguishFire/FireFighter.class index 07d369a4f57b4eda880b4f6f1e31137ffe0f6a51..e5012f6d28881d7d171c7bdeae973cc76e0c994c 100644 Binary files a/build/classes/java/main/model/ExtinguishFire/FireFighter.class and b/build/classes/java/main/model/ExtinguishFire/FireFighter.class differ diff --git a/build/classes/java/main/model/ExtinguishFire/MotorizedFireFighter.class b/build/classes/java/main/model/ExtinguishFire/MotorizedFireFighter.class index e3a993901cb8aa5f750a56cce948787688ea3a97..7a3633c64f4abb59132f6defb8834ff76bd4328c 100644 Binary files a/build/classes/java/main/model/ExtinguishFire/MotorizedFireFighter.class and b/build/classes/java/main/model/ExtinguishFire/MotorizedFireFighter.class differ diff --git a/build/classes/java/main/model/Flammable/Fire.class b/build/classes/java/main/model/Flammable/Fire.class index 73be5d07584eaf0ff723d882b793f59d01bd67d8..2abe65e01501600b8be246ec1309fd52be8e240e 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/Flammable/Flammable.class b/build/classes/java/main/model/Flammable/Flammable.class deleted file mode 100644 index 91181ac215dd52d55daf7d5430d885160fda1cd7..0000000000000000000000000000000000000000 Binary files a/build/classes/java/main/model/Flammable/Flammable.class and /dev/null differ diff --git a/build/classes/java/main/model/GameBoard.class b/build/classes/java/main/model/GameBoard.class index 61b17d77ed4e0ac5b07b669538bb7fffc413badb..4707bcbed7e4df42d26cf1253c962fde60af02f3 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/Obstacle/Mountain.class b/build/classes/java/main/model/Obstacle/Mountain.class index 56c789bda54924d819ddd2b37cfb68833d8c906b..ae11d7286c4c24792a71f92ca96b264da36693fa 100644 Binary files a/build/classes/java/main/model/Obstacle/Mountain.class and b/build/classes/java/main/model/Obstacle/Mountain.class differ diff --git a/build/classes/java/main/model/Obstacle/Road.class b/build/classes/java/main/model/Obstacle/Road.class index 023bf7fdd61ce631dfb5681682090ef8f651f5f8..7cd384b65e4f170977907646f5f16002041872ed 100644 Binary files a/build/classes/java/main/model/Obstacle/Road.class and b/build/classes/java/main/model/Obstacle/Road.class differ diff --git a/build/classes/java/main/model/Visitor/FireFinder.class b/build/classes/java/main/model/Visitor/FireFinder.class index 3eee0b6a9e0b6ef841b3a41e019f5871a34211a8..1f45323b4f6e4dd56ab5d718c3c913512cab99d3 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/view/FirefighterGrid.class b/build/classes/java/main/view/FirefighterGrid.class index 22fe36e949c5405790d75ce97f546e9616678c9a..ed74c3d24b422e79a8b2412f54e794aed2a40b26 100644 Binary files a/build/classes/java/main/view/FirefighterGrid.class and b/build/classes/java/main/view/FirefighterGrid.class differ diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/Cloud.class.uniqueId20 b/build/tmp/compileJava/compileTransaction/stash-dir/Cloud.class.uniqueId20 index 5e1d4f55b67a31289f5bc99f64b1dee2a6591790..2256a7e2ca817fb4f525a7e510a7f8eea8efd504 100644 Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/Cloud.class.uniqueId20 and b/build/tmp/compileJava/compileTransaction/stash-dir/Cloud.class.uniqueId20 differ diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/Controller.class.uniqueId11 b/build/tmp/compileJava/compileTransaction/stash-dir/Controller.class.uniqueId11 index d9275d02435beb2bc5c3fbb3c292ba1880c7deec..98ccf5787e8028794c9dcde0bc8d6b10007f2ab9 100644 Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/Controller.class.uniqueId11 and b/build/tmp/compileJava/compileTransaction/stash-dir/Controller.class.uniqueId11 differ diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/CrossableByFire.class.uniqueId2 b/build/tmp/compileJava/compileTransaction/stash-dir/CrossableByFire.class.uniqueId2 deleted file mode 100644 index d585247000612891952094f4d0021748b654e35b..0000000000000000000000000000000000000000 Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/CrossableByFire.class.uniqueId2 and /dev/null differ diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/CrossableByFirefighter.class.uniqueId6 b/build/tmp/compileJava/compileTransaction/stash-dir/CrossableByFirefighter.class.uniqueId6 deleted file mode 100644 index cacfa08ef9c97566c3144361ab37d167076744c3..0000000000000000000000000000000000000000 Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/CrossableByFirefighter.class.uniqueId6 and /dev/null differ diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/CrossableByRockery.class.uniqueId5 b/build/tmp/compileJava/compileTransaction/stash-dir/CrossableByRockery.class.uniqueId5 deleted file mode 100644 index 51580bc47219198caa4742ea9d4fec76e08b00d2..0000000000000000000000000000000000000000 Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/CrossableByRockery.class.uniqueId5 and /dev/null differ diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/ExtinguishFire.class.uniqueId0 b/build/tmp/compileJava/compileTransaction/stash-dir/ExtinguishFire.class.uniqueId0 deleted file mode 100644 index 567d4a02a156b9d882a255fecd3f2f6fec4a11ed..0000000000000000000000000000000000000000 Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/ExtinguishFire.class.uniqueId0 and /dev/null differ diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/Fire.class.uniqueId18 b/build/tmp/compileJava/compileTransaction/stash-dir/Fire.class.uniqueId18 index 592ff7207dde613f15cbd4bcd3eb26f8fa74002f..d6224bfde1cc1b9ed9565103382b8dc093a773a0 100644 Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/Fire.class.uniqueId18 and b/build/tmp/compileJava/compileTransaction/stash-dir/Fire.class.uniqueId18 differ diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/FireFighter.class.uniqueId3 b/build/tmp/compileJava/compileTransaction/stash-dir/FireFighter.class.uniqueId3 deleted file mode 100644 index 07d369a4f57b4eda880b4f6f1e31137ffe0f6a51..0000000000000000000000000000000000000000 Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/FireFighter.class.uniqueId3 and /dev/null differ diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/FireFinder.class.uniqueId15 b/build/tmp/compileJava/compileTransaction/stash-dir/FireFinder.class.uniqueId15 deleted file mode 100644 index 1f45323b4f6e4dd56ab5d718c3c913512cab99d3..0000000000000000000000000000000000000000 Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/FireFinder.class.uniqueId15 and /dev/null differ diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/FirefighterGrid.class.uniqueId8 b/build/tmp/compileJava/compileTransaction/stash-dir/FirefighterGrid.class.uniqueId8 index 22fe36e949c5405790d75ce97f546e9616678c9a..ed74c3d24b422e79a8b2412f54e794aed2a40b26 100644 Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/FirefighterGrid.class.uniqueId8 and b/build/tmp/compileJava/compileTransaction/stash-dir/FirefighterGrid.class.uniqueId8 differ diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/Flammable.class.uniqueId13 b/build/tmp/compileJava/compileTransaction/stash-dir/Flammable.class.uniqueId13 deleted file mode 100644 index 91181ac215dd52d55daf7d5430d885160fda1cd7..0000000000000000000000000000000000000000 Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/Flammable.class.uniqueId13 and /dev/null differ diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/GameBoard.class.uniqueId21 b/build/tmp/compileJava/compileTransaction/stash-dir/GameBoard.class.uniqueId21 index 61b17d77ed4e0ac5b07b669538bb7fffc413badb..30dc7c9cc4bb6ce1ad75865c2025651d64289c2b 100644 Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/GameBoard.class.uniqueId21 and b/build/tmp/compileJava/compileTransaction/stash-dir/GameBoard.class.uniqueId21 differ diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/GameBuilder.class.uniqueId22 b/build/tmp/compileJava/compileTransaction/stash-dir/GameBuilder.class.uniqueId22 index 1a08e360345d3bbfdd8b1a2bc287f17d1c4713ed..daa37805233ef32cff1cb5f8236a39e129f288de 100644 Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/GameBuilder.class.uniqueId22 and b/build/tmp/compileJava/compileTransaction/stash-dir/GameBuilder.class.uniqueId22 differ diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/MotorizedFireFighter.class.uniqueId25 b/build/tmp/compileJava/compileTransaction/stash-dir/MotorizedFireFighter.class.uniqueId25 index e3a993901cb8aa5f750a56cce948787688ea3a97..7d8817e94bda0cd8245de773217e48c39e5d2108 100644 Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/MotorizedFireFighter.class.uniqueId25 and b/build/tmp/compileJava/compileTransaction/stash-dir/MotorizedFireFighter.class.uniqueId25 differ diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/Mountain.class.uniqueId26 b/build/tmp/compileJava/compileTransaction/stash-dir/Mountain.class.uniqueId26 index 56c789bda54924d819ddd2b37cfb68833d8c906b..5013ecbf5a932a3fdeb6999d3282c7cade0dcaa7 100644 Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/Mountain.class.uniqueId26 and b/build/tmp/compileJava/compileTransaction/stash-dir/Mountain.class.uniqueId26 differ diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/Road.class.uniqueId7 b/build/tmp/compileJava/compileTransaction/stash-dir/Road.class.uniqueId7 deleted file mode 100644 index 023bf7fdd61ce631dfb5681682090ef8f651f5f8..0000000000000000000000000000000000000000 Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/Road.class.uniqueId7 and /dev/null differ diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/Rockery.class.uniqueId14 b/build/tmp/compileJava/compileTransaction/stash-dir/Rockery.class.uniqueId14 deleted file mode 100644 index 1b8e6d4f410b9c144b5ea91b8c2b5f2ec3c4fdde..0000000000000000000000000000000000000000 Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/Rockery.class.uniqueId14 and /dev/null differ diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/RockeryFinder.class.uniqueId1 b/build/tmp/compileJava/compileTransaction/stash-dir/RockeryFinder.class.uniqueId1 deleted file mode 100644 index 4a8091d921e39369ed2f732abeb6aae933f6b014..0000000000000000000000000000000000000000 Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/RockeryFinder.class.uniqueId1 and /dev/null differ diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/module-info.class.uniqueId4 b/build/tmp/compileJava/compileTransaction/stash-dir/module-info.class.uniqueId4 deleted file mode 100644 index 228b8be064ecf35c69bb788937ce7ff8ab50174e..0000000000000000000000000000000000000000 Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/module-info.class.uniqueId4 and /dev/null differ diff --git a/build/tmp/compileJava/previous-compilation-data.bin b/build/tmp/compileJava/previous-compilation-data.bin index c10c7ed60a775b507c4b81b1b81e11d626881ef2..4af7b5f944fed88cd680642b32492c3734ddb34c 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 0ff42af2cb55da64fb072e87a0f0dce4aaab89be..e6a5de826c64eccf5c562eba3a0b27d0f59b0bf3 100644 --- a/src/main/java/app/SimulatorApplication.java +++ b/src/main/java/app/SimulatorApplication.java @@ -23,6 +23,7 @@ public class SimulatorApplication extends javafx.application.Application { public static final int INITIAL_MOTORIZEDFIREFIGHTER_COUNT = 2; public static final int INITIAL_MOUNTAIN_COUNT = 15; public static final int INITIAL_ROAD_COUNT = 10; + public static final int INITIAL_ROCKERY_COUNT = 20; private Stage primaryStage; private Parent view; @@ -48,7 +49,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_CLOUD_COUNT,INITIAL_MOTORIZEDFIREFIGHTER_COUNT,INITIAL_MOUNTAIN_COUNT,INITIAL_ROAD_COUNT); + INITIAL_FIRE_COUNT, INITIAL_FIREFIGHTER_COUNT, INITIAL_CLOUD_COUNT,INITIAL_MOTORIZEDFIREFIGHTER_COUNT,INITIAL_MOUNTAIN_COUNT,INITIAL_ROAD_COUNT,INITIAL_ROCKERY_COUNT); } private void showScene() { diff --git a/src/main/java/controller/Controller.java b/src/main/java/controller/Controller.java index 84d8c5e8444272d4befdf4bc615ef1ba0019ca37..9b077cc65fc9479088f4d7ff2c92bbc96e657df2 100644 --- a/src/main/java/controller/Controller.java +++ b/src/main/java/controller/Controller.java @@ -111,9 +111,9 @@ public class Controller { public void initialize(int squareWidth, int squareHeight, int columnCount, int rowCount, int initialFireCount, int initialFirefighterCount,int initialCloudCount, - int initialMotorizedFireFighterCount,int initialMountainCount,int initialRoadCount ) { + int initialMotorizedFireFighterCount,int initialMountainCount,int initialRoadCount ,int initialRockeryCount ) { grid.setDimensions(columnCount, rowCount, squareWidth, squareHeight); - board = new GameBoard(rowCount,columnCount,initialFireCount,initialFirefighterCount,initialCloudCount,initialMotorizedFireFighterCount,initialMountainCount,initialRoadCount); + board = new GameBoard(rowCount,columnCount,initialFireCount,initialFirefighterCount,initialCloudCount,initialMotorizedFireFighterCount,initialMountainCount,initialRoadCount,initialRockeryCount); board.initializeElements(); repaintGrid(); } diff --git a/src/main/java/model/Builder/GameBuilder.java b/src/main/java/model/Builder/GameBuilder.java index 840dc3e488f158412055c89ec6a36fb9d1a83f38..e27708ba107a1158a54802fae9fb90e5bf600e45 100644 --- a/src/main/java/model/Builder/GameBuilder.java +++ b/src/main/java/model/Builder/GameBuilder.java @@ -65,18 +65,12 @@ public class GameBuilder implements IGameBuilder { for(int i=0;i<clouds;i++) { Cloud cloud=new Cloud(Color.DARKCYAN); cloud.initialize(); - }/* - for(int i=0;i<mountains;i++) { ///la meme chose ici. - Mountain mountain=new Mountain(Color.BROWN); - mountain.initialize(); } - - for(int i=0;i<roads;i++) { Road road=new Road(Color.GRAY); road.initialize(); - }*/ - for(int i=0;i<15;i++) { + } + for(int i=0;i<rockerys;i++) { Rockery rockery=new Rockery( Color.rgb(85, 107, 47)); rockery.initialize(); } @@ -92,6 +86,10 @@ public class GameBuilder implements IGameBuilder { FireFighter fireFighter=new FireFighter(Color.BLUE); fireFighter.initialize(); } + for(int i=0;i<mountains;i++) { + Mountain mountain=new Mountain(Color.BROWN); + mountain.initialize(); + } } } \ No newline at end of file diff --git a/src/main/java/model/ExtinguishFire/Cloud.java b/src/main/java/model/ExtinguishFire/Cloud.java index e3dd9f80c756d8882aac28b5b7ec14ea58ca9235..8584ba4625aa6fccce0d6bf6d83d8f74eb9dbe2a 100644 --- a/src/main/java/model/ExtinguishFire/Cloud.java +++ b/src/main/java/model/ExtinguishFire/Cloud.java @@ -12,7 +12,7 @@ import java.util.*; import static model.GameBoard.elementPosition; import static model.GameBoard.randomPosition; -public class Cloud implements ExtinguishFire{ +public class Cloud implements BoardElement{ private final Color color; diff --git a/src/main/java/model/ExtinguishFire/ExtinguishFire.java b/src/main/java/model/ExtinguishFire/ExtinguishFire.java deleted file mode 100644 index c65c649b5c27c7a080feb45d9ea25e7f98962907..0000000000000000000000000000000000000000 --- a/src/main/java/model/ExtinguishFire/ExtinguishFire.java +++ /dev/null @@ -1,14 +0,0 @@ -package model.ExtinguishFire; - -import model.BoardElement; -import model.GameBoard; -import util.Position; - -import java.util.ArrayList; -import java.util.HashMap; - -public interface ExtinguishFire extends BoardElement { - - //void update(GameBoard gameBoard , Position position, HashMap<Position, ArrayList<BoardElement>> newElementPosition, ArrayList<Position> extinguishPosition); - -} diff --git a/src/main/java/model/ExtinguishFire/FireFighter.java b/src/main/java/model/ExtinguishFire/FireFighter.java index f244b60b1c23b4af1d1a8d268881daadaee47f8d..6c1b688ca47147bf2f332e471103075609002264 100644 --- a/src/main/java/model/ExtinguishFire/FireFighter.java +++ b/src/main/java/model/ExtinguishFire/FireFighter.java @@ -8,7 +8,6 @@ import util.Position; import java.util.*; - public class FireFighter extends FireFighters { private final Color color; @@ -25,33 +24,28 @@ public class FireFighter extends FireFighters { return visitor.visit(this); } - public void initialize() { - super.initialize(); - } - public void moveAndExtinguish(HashMap<Position, ArrayList<BoardElement>> newElementPosition, Position newFirefighterPosition, ArrayList<Position> extinguishPosition, List<Position> firePositions, GameBoard gameBoard) { + public void moveAndExtinguish(HashMap<Position, ArrayList<BoardElement>> newElementPosition, Position newFirefighterPosition, ArrayList<Position> extinguishPosition) { addElementToElementPosition(newElementPosition, newFirefighterPosition); extinguishPosition.add(newFirefighterPosition); - List<Position> neighborFirePositions = gameBoard.neighbors(newFirefighterPosition).stream() + List<Position> neighborFirePositions = GameBoard.neighbors(newFirefighterPosition).stream() .filter(firePositions()::contains).toList(); extinguishPosition.addAll(neighborFirePositions); } @Override public void update(GameBoard gameBoard, Position position, HashMap<Position, ArrayList<BoardElement>> newElementPosition, ArrayList<Position> extinguishPosition) { - List<Position> firePositions = firePositions(); Position newFirefighterPosition = gameBoard.neighborClosestToFire(position); extinguishPosition.add(position); if(canMove(newFirefighterPosition)){ - moveAndExtinguish(newElementPosition,newFirefighterPosition,extinguishPosition,firePositions,gameBoard); + moveAndExtinguish(newElementPosition,newFirefighterPosition,extinguishPosition); }else { - List<Position> neighbors = gameBoard.neighbors(position); + List<Position> neighbors = GameBoard.neighbors(position); for (Position neighbourPosition : neighbors) { if(canMove(neighbourPosition)){ - moveAndExtinguish(newElementPosition,neighbourPosition,extinguishPosition,firePositions,gameBoard); + moveAndExtinguish(newElementPosition,neighbourPosition,extinguishPosition); return; } } - //moveAndExtinguish(newElementPosition,position,extinguishPosition,firePositions,gameBoard); } } diff --git a/src/main/java/model/ExtinguishFire/MotorizedFireFighter.java b/src/main/java/model/ExtinguishFire/MotorizedFireFighter.java index f51f45c5ab5630ad198bc0d9c5af94aa0e0fd23e..97ea204ef94fb7ae14eeb00be57fd0a54090cd34 100644 --- a/src/main/java/model/ExtinguishFire/MotorizedFireFighter.java +++ b/src/main/java/model/ExtinguishFire/MotorizedFireFighter.java @@ -28,20 +28,16 @@ public class MotorizedFireFighter extends FireFighters { return visitor.visit(this); } - public void initialize() { - super.initialize(); // to delete - } - public void moveAndExtinguish(HashMap<Position, ArrayList<BoardElement>> newElementPosition, ArrayList<Position> newMotorizedFireFighterPositions, - ArrayList<Position> extinguishPosition, List<Position> firePositions, GameBoard gameBoard) { + ArrayList<Position> extinguishPosition, List<Position> firePositions) { addElementToElementPosition(newElementPosition, newMotorizedFireFighterPositions.get(1)); extinguishPosition.addAll(newMotorizedFireFighterPositions); List<Position> neighborFirePositions = new ArrayList<>(); - neighborFirePositions.addAll(gameBoard.neighbors(newMotorizedFireFighterPositions.get(0)).stream() + neighborFirePositions.addAll(GameBoard.neighbors(newMotorizedFireFighterPositions.get(0)).stream() .filter(firePositions::contains).toList()); - neighborFirePositions.addAll(gameBoard.neighbors(newMotorizedFireFighterPositions.get(1)).stream() + neighborFirePositions.addAll(GameBoard.neighbors(newMotorizedFireFighterPositions.get(1)).stream() .filter(firePositions::contains).toList()); extinguishPosition.addAll(neighborFirePositions); } @@ -57,13 +53,13 @@ public class MotorizedFireFighter extends FireFighters { if (canMove(newMotorizedFireFighterPosition2)) { newMotorizedFireFighterPositions.add(newMotorizedFireFighterPosition2); - moveAndExtinguish(newElementPosition, newMotorizedFireFighterPositions, extinguishPosition,firePositions, gameBoard); + moveAndExtinguish(newElementPosition, newMotorizedFireFighterPositions, extinguishPosition,firePositions); } else { - List<Position> neighbors = gameBoard.neighbors(position); + List<Position> neighbors = GameBoard.neighbors(position); for (Position neighbourPosition : neighbors) { if (canMove(neighbourPosition)) { newMotorizedFireFighterPositions.add(position); - moveAndExtinguish(newElementPosition, newMotorizedFireFighterPositions, extinguishPosition, firePositions, gameBoard); + moveAndExtinguish(newElementPosition, newMotorizedFireFighterPositions, extinguishPosition, firePositions); break; } } diff --git a/src/main/java/model/Flammable/Fire.java b/src/main/java/model/Flammable/Fire.java index 7b530cd60c30da4d0d6de80e715a9750fccf6766..c1990b1286299aecba8f7572e659e1fc5bd061bd 100644 --- a/src/main/java/model/Flammable/Fire.java +++ b/src/main/java/model/Flammable/Fire.java @@ -10,7 +10,7 @@ import java.util.*; import static model.GameBoard.elementPosition; -public class Fire implements Flammable{ +public class Fire implements BoardElement { private int turns=0; private final Color color; @@ -57,7 +57,7 @@ public class Fire implements Flammable{ if(canMove(position,newElementPosition)) addElementToElementPosition(newElementPosition,position); if ((gameBoard.stepNumber() % 2 == 0 && !inRockery(position))||(inRockery(position) && turns==4)) { - List<Position> positionsNeighbours = new ArrayList<>(gameBoard.neighbors(position)); + List<Position> positionsNeighbours = new ArrayList<>(GameBoard.neighbors(position)); for(Position positionNeighbour : positionsNeighbours){ if(!extinguishPosition.contains(positionNeighbour)&& canMove(positionNeighbour,newElementPosition)){ addElementToElementPosition(newElementPosition,positionNeighbour); diff --git a/src/main/java/model/Flammable/Flammable.java b/src/main/java/model/Flammable/Flammable.java deleted file mode 100644 index 72fb4d693d7e7d1467e839ace1227d2418f67662..0000000000000000000000000000000000000000 --- a/src/main/java/model/Flammable/Flammable.java +++ /dev/null @@ -1,14 +0,0 @@ -package model.Flammable; - -import model.BoardElement; -import model.GameBoard; -import util.Position; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -public interface Flammable extends BoardElement{ - - //void update(GameBoard gameBoard, Position position,HashMap<Position, ArrayList<BoardElement>> newElementPosition, ArrayList<Position> extinguishPosition); -} diff --git a/src/main/java/model/GameBoard.java b/src/main/java/model/GameBoard.java index 271faa66900f8073fa339122390a934e3782ca77..fca8a57d14a3f5c4a4900620360e0486ee371485 100644 --- a/src/main/java/model/GameBoard.java +++ b/src/main/java/model/GameBoard.java @@ -2,7 +2,6 @@ package model; import model.Builder.GameBuilder; -import model.Flammable.Flammable; import model.Visitor.FireFinder; import util.Position; @@ -17,6 +16,7 @@ public class GameBoard implements Board{ private final int initialMotorizedFireFighterCount; private final int initialMountainCount; private final int initialRoadCount; + private final int initialRockeryCount; private int step = 0; static Random randomGenerator = new Random(); @@ -28,7 +28,7 @@ public class GameBoard implements Board{ public GameBoard(int columnCount,int rowCount,int initialFireCount, int initialFirefighterCount,int initialCloudCount, - int initialMotorizedFireFighterCount,int initialMountainCount,int initialRoadCount) { + int initialMotorizedFireFighterCount,int initialMountainCount,int initialRoadCount,int initialRockeryCount) { GameBoard.columnCount = columnCount; GameBoard.rowCount = rowCount; this.initialFireCount = initialFireCount; @@ -37,6 +37,7 @@ public class GameBoard implements Board{ this.initialMotorizedFireFighterCount=initialMotorizedFireFighterCount; this.initialMountainCount = initialMountainCount; this.initialRoadCount = initialRoadCount; + this.initialRockeryCount = initialRockeryCount; } public void initializeElements(){ @@ -47,6 +48,7 @@ public class GameBoard implements Board{ .setCloud(initialCloudCount) .setMotorizedFireFighter(initialMotorizedFireFighterCount) .setMountain(initialMountainCount) + .setRockery(initialRockeryCount) .build(); } @@ -69,8 +71,7 @@ public class GameBoard implements Board{ for (Map.Entry<Position, ArrayList<BoardElement>> entry : elementPosition.entrySet()){ for(BoardElement element : entry.getValue()){ if (element.accept(new FireFinder())){ - Flammable element1 = (Flammable) element; - element1.update(this,entry.getKey(),newElementPosition,extinguishPosition); + element.update(this,entry.getKey(),newElementPosition,extinguishPosition); } } } @@ -111,7 +112,7 @@ public class GameBoard implements Board{ return GameBoard.columnCount; } - public List<Position> neighbors(Position position) { + public static List<Position> neighbors(Position position) { List<Position> list = new ArrayList<>(); if (position.row() > 0) list.add(new Position(position.row() - 1, position.column())); if (position.column() > 0) list.add(new Position(position.row(), position.column() - 1)); @@ -119,14 +120,6 @@ public class GameBoard implements Board{ if (position.column() < columnCount - 1) list.add(new Position(position.row(), position.column() + 1)); return list; } - public static List<Position> neighborsObstacle(Position positionObstacle) { - List<Position> list = new ArrayList<>(); - if (positionObstacle.row() > 0) list.add(new Position(positionObstacle.row() - 1, positionObstacle.column())); - if (positionObstacle.column() > 0) list.add(new Position(positionObstacle.row(), positionObstacle.column() - 1)); - if (positionObstacle.row() < rowCount - 1) list.add(new Position(positionObstacle.row() + 1, positionObstacle.column())); - if (positionObstacle.column() < columnCount - 1) list.add(new Position(positionObstacle.row(), positionObstacle.column() + 1)); - return list; - } public Position neighborClosestToFire(Position position) { diff --git a/src/main/java/model/Obstacle/Mountain.java b/src/main/java/model/Obstacle/Mountain.java index 4456ec1763f52c31596cbad1a2e159f750c4038a..baf1e93d9495d5faa1c9e4b018c8ae1b57641bde 100644 --- a/src/main/java/model/Obstacle/Mountain.java +++ b/src/main/java/model/Obstacle/Mountain.java @@ -3,14 +3,12 @@ package model.Obstacle; import javafx.scene.paint.Color; import model.BoardElement; import model.GameBoard; -import model.Visitor.Visitor; +import model.Visitor.*; import util.Position; -import java.util.ArrayList; -import java.util.HashMap; +import java.util.*; -import static model.GameBoard.elementPosition; -import static model.GameBoard.randomPosition; +import static model.GameBoard.*; public class Mountain extends Obstacles { @@ -30,20 +28,62 @@ public class Mountain extends Obstacles { return visitor.visit(this); } - @Override - public void initialize(){ - Position position=randomPosition(); - if (elementPosition.containsKey(position)) - elementPosition.get(position).add(this); - else { + public void initialize() { + ArrayList<Position> mountainsPositions=getMountainsPositions(); + if(mountainsPositions.isEmpty()){ + Position position = GameBoard.randomPosition(); + while(!canInitialise(position)){ + position = GameBoard.randomPosition(); + } + addElementToElementPosition(elementPosition,position); + }else{ + Random random=new Random(); + while (true){ + Position positionMountain=mountainsPositions.get(random.nextInt(mountainsPositions.size())); + List<Position> neighbourMountains=GameBoard.neighbors(positionMountain); + for (Position position:neighbourMountains){ + if(canInitialise(position)){ + addElementToElementPosition(elementPosition,position); + return; + } + } + } + } + + } + + private ArrayList<Position> getMountainsPositions() { + ArrayList<Position> mountains= new ArrayList<>(); + for (Map.Entry<Position, ArrayList<BoardElement>> entry : elementPosition.entrySet()) { + for (BoardElement element : entry.getValue()) { + if (element.accept(new MountainFinder())) { + mountains.add(entry.getKey()); + } + } + } + return mountains; + } + + private boolean canInitialise(Position position) { + if(elementPosition.containsKey(position)) { + for (BoardElement element : GameBoard.elementPosition.get(position)) { + if (!element.accept(new CrossableByMountain())) { + return false; + } + } + } + return true; + } + + private void addElementToElementPosition(HashMap<Position, ArrayList<BoardElement>> newElementPosition, Position newMountainsPosition) { + if (newElementPosition.containsKey(newMountainsPosition) ) { + newElementPosition.get(newMountainsPosition).add(this); + } else { ArrayList<BoardElement> boardElements = new ArrayList<>(); boardElements.add(this); - elementPosition.put(position, boardElements); + newElementPosition.put(newMountainsPosition, boardElements); } } - @Override - public void update(GameBoard gameBoard, Position position, HashMap<Position, ArrayList<BoardElement>> newElementPosition, ArrayList<Position> extinguishPosition) { - super.update(gameBoard,position,newElementPosition,extinguishPosition); - } } + diff --git a/src/main/java/model/Obstacle/Road.java b/src/main/java/model/Obstacle/Road.java index cbe4b3bb8b3b8dfca16705676e43137e02e7e5ed..ded19e8d1d1e850a6dfb80e727f836f997c3e488 100644 --- a/src/main/java/model/Obstacle/Road.java +++ b/src/main/java/model/Obstacle/Road.java @@ -3,23 +3,19 @@ package model.Obstacle; import javafx.scene.paint.Color; import model.BoardElement; import model.GameBoard; -import model.Visitor.CrossableByRoad; -import model.Visitor.Visitor; +import model.Visitor.*; import util.Position; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.Map; +import java.util.*; -import static model.GameBoard.elementPosition; -import static model.GameBoard.randomPosition; +import static model.GameBoard.*; public class Road extends Obstacles { + private final Color color; public Road(Color color){ this.color=color; - initialize(); } @Override public Color getColor() { @@ -31,39 +27,104 @@ public class Road extends Obstacles { return visitor.visit(this); } - @Override public void initialize() { - Position position = new Position(0,0); - int count = 0 ; + ArrayList<Position> roadPositions=getMountainsPositions(); + if(roadPositions.isEmpty()){ + Position position = GameBoard.randomPosition(); + while(!canInitialise(position)){ + position = GameBoard.randomPosition(); + } + addElementToElementPosition(elementPosition,position); + }else{ + Random random=new Random(); + while (true){ + Position positionMountain=roadPositions.get(random.nextInt(roadPositions.size())); + List<Position> neighbourMountains=GameBoard.neighbors(positionMountain); + for (Position position:neighbourMountains){ + if(canInitialise(position) && squareProblem(position)){ + addElementToElementPosition(elementPosition,position); + return; + } + } + } + + } + + } + + private boolean squareProblem(Position position) { + int numberOfRoarsAround=0; + ArrayList<BoardElement> roadsPositions=getelementAtPositions(new Position(position.row()-1, position.column()),new Position(position.row()-1,position.column()-1),new Position(position.row(), position.column()-1)); + for (BoardElement boardElement:roadsPositions) { + if(boardElement.accept(new RoadFinder())) numberOfRoarsAround++; + } + if(numberOfRoarsAround==3) return false; + + numberOfRoarsAround=0; + roadsPositions=getelementAtPositions(new Position(position.row()-1, position.column()),new Position(position.row()-1,position.column()+1),new Position(position.row(), position.column()+1)); + for (BoardElement boardElement:roadsPositions) { + if(boardElement.accept(new RoadFinder())) numberOfRoarsAround++; + } + if(numberOfRoarsAround==3) return false; + + numberOfRoarsAround=0; + roadsPositions=getelementAtPositions(new Position(position.row(), position.column()-1),new Position(position.row()+1,position.column()-1),new Position(position.row()+1, position.column())); + for (BoardElement boardElement:roadsPositions) { + if(boardElement.accept(new RoadFinder())) numberOfRoarsAround++; + } + if(numberOfRoarsAround==3) return false; + + numberOfRoarsAround=0; + roadsPositions=getelementAtPositions(new Position(position.row()+1, position.column()),new Position(position.row()+1,position.column()+1),new Position(position.row(), position.column()+1)); + for (BoardElement boardElement:roadsPositions) { + if(boardElement.accept(new RoadFinder())) numberOfRoarsAround++; + } + if(numberOfRoarsAround==3) return false; + + return true; + } + + private ArrayList<BoardElement> getelementAtPositions(Position position, Position position1, Position position2) { + ArrayList<BoardElement> mountainsPositions=new ArrayList<>(); + if(elementPosition.containsKey(position)) mountainsPositions.addAll(elementPosition.get(position)) ; + else return mountainsPositions; + if(elementPosition.containsKey(position1)) mountainsPositions.addAll(elementPosition.get(position1)); + else return mountainsPositions; + if(elementPosition.containsKey(position2)) mountainsPositions.addAll(elementPosition.get(position2)); + return mountainsPositions; + } + + private ArrayList<Position> getMountainsPositions() { + ArrayList<Position> roads= new ArrayList<>(); for (Map.Entry<Position, ArrayList<BoardElement>> entry : elementPosition.entrySet()) { - ArrayList<BoardElement> boardElements = entry.getValue(); - for(BoardElement boardElement : boardElements){ - if(!boardElement.accept(new CrossableByRoad())){ - position=entry.getKey(); - count++; + for (BoardElement element : entry.getValue()) { + if (element.accept(new RoadFinder())) { + roads.add(entry.getKey()); } } } - if(count!=0){ - Position newPosition = new Position(position.row(),position.column()+1); - if (elementPosition.containsKey(newPosition)) { - elementPosition.get(newPosition).add(this); - - } else { - ArrayList<BoardElement> boardElements = new ArrayList<>(); - boardElements.add(this); - elementPosition.put(newPosition, boardElements); + return roads; + } + + private boolean canInitialise(Position position) { + if(elementPosition.containsKey(position)) { + for (BoardElement element : GameBoard.elementPosition.get(position)) { + if (!element.accept(new CrossableByRoad())) { + return false; + } } } - else { + return true; + } + + private void addElementToElementPosition(HashMap<Position, ArrayList<BoardElement>> newElementPosition, Position newRoadPosition) { + if (newElementPosition.containsKey(newRoadPosition) ) { + newElementPosition.get(newRoadPosition).add(this); + } else { ArrayList<BoardElement> boardElements = new ArrayList<>(); boardElements.add(this); - elementPosition.put(randomPosition(), boardElements); + newElementPosition.put(newRoadPosition, boardElements); } } - @Override - public void update(GameBoard gameBoard, Position position, HashMap<Position, ArrayList<BoardElement>> newElementPosition, ArrayList<Position> extinguishPosition) { - super.update(gameBoard,position,newElementPosition,extinguishPosition); - } -} \ No newline at end of file +} diff --git a/src/main/java/model/Rockery.java b/src/main/java/model/Rockery.java index e94e2ae0bc7fc6bac29b06a6760ee394152836a1..7e9d515bb3118b6c11679925fef2977e5cecf522 100644 --- a/src/main/java/model/Rockery.java +++ b/src/main/java/model/Rockery.java @@ -1,7 +1,6 @@ package model; import javafx.scene.paint.Color; -import model.Visitor.CrossableByFire; import model.Visitor.CrossableByRockery; import model.Visitor.Visitor; import util.Position; diff --git a/src/main/java/model/Visitor/MountainFinder.java b/src/main/java/model/Visitor/MountainFinder.java new file mode 100644 index 0000000000000000000000000000000000000000..b89f4ddacb80ff07fb933348eec7f172f06b2767 --- /dev/null +++ b/src/main/java/model/Visitor/MountainFinder.java @@ -0,0 +1,46 @@ +package model.Visitor; + +import model.ExtinguishFire.Cloud; +import model.ExtinguishFire.FireFighter; +import model.ExtinguishFire.MotorizedFireFighter; +import model.Flammable.Fire; +import model.Obstacle.Mountain; +import model.Obstacle.Road; +import model.Rockery; + +public class MountainFinder implements Visitor{ + @Override + public boolean visit(Fire fire) { + return false; + } + + @Override + public boolean visit(FireFighter fireFighter) { + return false; + } + + @Override + public boolean visit(Cloud cloud) { + return false; + } + + @Override + public boolean visit(MotorizedFireFighter motorizedFireFighter) { + return false; + } + + @Override + public boolean visit(Mountain mountain) { + return true; + } + + @Override + public boolean visit(Road road) { + return false; + } + + @Override + public boolean visit(Rockery rockery) { + return false; + } +} diff --git a/src/main/java/model/Visitor/RoadFinder.java b/src/main/java/model/Visitor/RoadFinder.java new file mode 100644 index 0000000000000000000000000000000000000000..523dd645f55511b691112b6ee72fee55d5fc2c56 --- /dev/null +++ b/src/main/java/model/Visitor/RoadFinder.java @@ -0,0 +1,46 @@ +package model.Visitor; + +import model.ExtinguishFire.Cloud; +import model.ExtinguishFire.FireFighter; +import model.ExtinguishFire.MotorizedFireFighter; +import model.Flammable.Fire; +import model.Obstacle.Mountain; +import model.Obstacle.Road; +import model.Rockery; + +public class RoadFinder implements Visitor{ + @Override + public boolean visit(Fire fire) { + return false; + } + + @Override + public boolean visit(FireFighter fireFighter) { + return false; + } + + @Override + public boolean visit(Cloud cloud) { + return false; + } + + @Override + public boolean visit(MotorizedFireFighter motorizedFireFighter) { + return false; + } + + @Override + public boolean visit(Mountain mountain) { + return false; + } + + @Override + public boolean visit(Road road) { + return true; + } + + @Override + public boolean visit(Rockery rockery) { + return false; + } +} diff --git a/src/main/java/view/FirefighterGrid.java b/src/main/java/view/FirefighterGrid.java index 1091bebfb81bf8990409ab5439f96d844af7440d..38d4317ebb5bad295924280a4837d01fe294608d 100644 --- a/src/main/java/view/FirefighterGrid.java +++ b/src/main/java/view/FirefighterGrid.java @@ -12,7 +12,6 @@ import java.util.List; public class FirefighterGrid extends Canvas implements Grid<model.BoardElement>{ - private void paintElementAtPosition(ArrayList<BoardElement> elementsAtPosition, Position position) { paintSquare(position.row(), position.column(), elementsAtPosition); }