diff --git a/.gradle/8.4/executionHistory/executionHistory.bin b/.gradle/8.4/executionHistory/executionHistory.bin index 23b910c84593008cc664b21a2ec6261c0629fdcf..5eb4f675bf7ca3ca331b2ae2187ffa2524c84795 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 b7c964893efa8831ad8806d4f1343a8bf6d5349c..ff8ef3d1b49198e32467621eef0dcaa8ee28a970 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 01d4ae1131c3e851320bb8b6e29f1d92cc6e2874..7ce511ef6e03a44b01690b486336c4cd64c16b90 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 ee0b1b30e3c0629debb4a250dfa42950f0b96b4e..a3ef8ba94fb1c5fa03f359ed7a854fa05c0b4176 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 50a163583b8b043ef51c8ca6050419b3c8a72c7d..57064a4f1c4975a19f5c8d35e3156b80c6a05737 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 b806b428a767754d77dffa311cbd75688d170cff..85650c1e71663e0e9ab1ad5fce91edd5e89d7891 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 501348736c0f0b2b8f1f95eb4bdcf9a9365b09d6..b40dcda137a4ffcb83fca64f10b259d3d5c29193 100644 Binary files a/.gradle/buildOutputCleanup/outputFiles.bin and b/.gradle/buildOutputCleanup/outputFiles.bin differ diff --git a/build/classes/java/main/model/Element/FireFigther.class b/build/classes/java/main/model/Element/FireFigther.class index e752d1c02a0e0ae6d18d0eed1ab81b5f46e5bde0..91897b041924b12c33ec8ea1e57d0214c7a83d80 100644 Binary files a/build/classes/java/main/model/Element/FireFigther.class and b/build/classes/java/main/model/Element/FireFigther.class differ diff --git a/build/classes/java/main/model/FirefighterBoard.class b/build/classes/java/main/model/FirefighterBoard.class index d102989f64dd2b11f2f93aee28b47dc5d460ca4c..22c5e7237e4ea669a27d68a9ab99bb1dd1ffa5f4 100644 Binary files a/build/classes/java/main/model/FirefighterBoard.class and b/build/classes/java/main/model/FirefighterBoard.class differ diff --git a/build/classes/java/main/module-info.class b/build/classes/java/main/module-info.class deleted file mode 100644 index 0e3710ab45ba151ddc0776ef50a1dd310d9846d7..0000000000000000000000000000000000000000 Binary files a/build/classes/java/main/module-info.class and /dev/null differ diff --git a/build/classes/java/main/util/Tools.class b/build/classes/java/main/util/Tools.class index 824ee22bf406b942acc14d94d8737fa0afd14d8a..1de0cd6f22cd53fd80cf5f92f4c297bbe182171f 100644 Binary files a/build/classes/java/main/util/Tools.class and b/build/classes/java/main/util/Tools.class differ diff --git a/build/classes/java/test/model/FirefighterBoardTest.class b/build/classes/java/test/model/FirefighterBoardTest.class deleted file mode 100644 index 2f78280a259abd0179915f2984b66b82f886e0df..0000000000000000000000000000000000000000 Binary files a/build/classes/java/test/model/FirefighterBoardTest.class and /dev/null differ diff --git a/build/classes/java/test/view/FirefighterGridTest.class b/build/classes/java/test/view/FirefighterGridTest.class deleted file mode 100644 index de04ddb3608a2a6e826f6764e68891eaa86f2722..0000000000000000000000000000000000000000 Binary files a/build/classes/java/test/view/FirefighterGridTest.class and /dev/null differ diff --git a/build/tmp/compileJava/previous-compilation-data.bin b/build/tmp/compileJava/previous-compilation-data.bin index e5a1d76288c668649bad8511abdb7e552df95c99..e94987322f238ea26ffd172b792eaef236f766ed 100644 Binary files a/build/tmp/compileJava/previous-compilation-data.bin and b/build/tmp/compileJava/previous-compilation-data.bin differ diff --git a/build/tmp/compileTestJava/previous-compilation-data.bin b/build/tmp/compileTestJava/previous-compilation-data.bin deleted file mode 100644 index 13f25d29dcbe2bbc093d571e503f2d45b23515b2..0000000000000000000000000000000000000000 Binary files a/build/tmp/compileTestJava/previous-compilation-data.bin and /dev/null differ diff --git a/src/main/java/model/Element/FireFigther.java b/src/main/java/model/Element/FireFigther.java index afd16d2aaa65bf25577b8dc1347bfb2104d282ec..d18c808aed8bad79073dd6e350b54e280fa93afa 100644 --- a/src/main/java/model/Element/FireFigther.java +++ b/src/main/java/model/Element/FireFigther.java @@ -11,23 +11,18 @@ import static util.Tools.*; public class FireFigther implements ModelElement{ @Override public void update(Position position, Map<Position, List<ModelElement>> board, int step, int columnCount, int rowCount) { - for (Position position1 : neighbors(position, rowCount, columnCount)) { - if (board.containsKey(position1)) { - if (board.get(position1).contains(new Fire())) { - extinguish(position1,board); - } - } - - } - Position newPositionStep = neighborClosestTo(position,board,rowCount,columnCount); - extinguish(newPositionStep,board); - removeElement(position,board,new FireFigther()); - addElement(newPositionStep,board,new FireFigther()); + if(!extinguishneighbor(position,board,columnCount,rowCount)) { + Position newPositionStep = neighborClosestTo(position,board,rowCount,columnCount,new Fire(),List.of(new Mountain())); + removeElement(position, board, new FireFigther()); + addElement(newPositionStep, board, new FireFigther()); + extinguishneighbor(newPositionStep,board,columnCount,rowCount); + } } + @Override public ViewElement getViewElement() { return ViewElement.FIREFIGHTER; diff --git a/src/main/java/model/Element/ModelElement.java b/src/main/java/model/Element/ModelElement.java index 9e88284ae9262c65f89740cf63d7f659b2efce6c..ece954a3a89629091de4483786f935cc4a7c486b 100644 --- a/src/main/java/model/Element/ModelElement.java +++ b/src/main/java/model/Element/ModelElement.java @@ -7,9 +7,9 @@ import java.util.List; import java.util.Map; public interface ModelElement { - void update (Position position,Map<Position,List<ModelElement>>board,int step,int columnCount, int rowCount); + void update(Position position, Map<Position, List<ModelElement>> board, int step, int columnCount, int rowCount); - ViewElement getViewElement(); + ViewElement getViewElement(); } diff --git a/src/main/java/model/Element/MotorisedFirefigther.java b/src/main/java/model/Element/MotorisedFirefigther.java index 4d093a3a85f739cb5246cb84765ec9414cae8b5b..e4766b3a18bac1c618362b84fe2460fe35d41723 100644 --- a/src/main/java/model/Element/MotorisedFirefigther.java +++ b/src/main/java/model/Element/MotorisedFirefigther.java @@ -12,24 +12,16 @@ import static util.Tools.removeElement; public class MotorisedFirefigther implements ModelElement{ @Override public void update(Position position, Map<Position, List<ModelElement>> board, int step, int columnCount, int rowCount) { - for (Position position1 : neighbors(position, rowCount, columnCount)) { - if (board.containsKey(position1)) { - if (board.get(position1).contains(new Fire())) { - extinguish(position,board); - return; - } - - } + if(!extinguishneighbor(position,board,columnCount,rowCount)) { + Fire fire = new Fire(); + Position newPositionStep = neighborClosestTo(position,board,rowCount,columnCount,fire,List.of(new Mountain())); + Position newPositionTwoStep= neighborClosestTo(newPositionStep,board,rowCount,columnCount,fire,List.of(new Mountain())); + MotorisedFirefigther motorisedFirefigther=new MotorisedFirefigther(); + removeElement(position,board,motorisedFirefigther); + addElement(newPositionTwoStep,board,motorisedFirefigther); + extinguishneighbor(newPositionTwoStep,board,columnCount,rowCount); } - MotorisedFirefigther motorisedFirefigther=new MotorisedFirefigther(); - Position newPositionStep = neighborClosestTo(position,board,rowCount,columnCount); - Position newPositionTwoStep= neighborClosestTo(newPositionStep,board,rowCount,columnCount); - extinguish(newPositionTwoStep,board); - removeElement(position,board,motorisedFirefigther); - addElement(newPositionTwoStep,board,motorisedFirefigther); - - } diff --git a/src/main/java/model/Element/Road.java b/src/main/java/model/Element/Road.java index e455f73916f96d47d72ea7536178edfc38389da5..48f896a88de729611be5b2ec361841c7862a2f06 100644 --- a/src/main/java/model/Element/Road.java +++ b/src/main/java/model/Element/Road.java @@ -13,7 +13,6 @@ public class Road implements ModelElement{ public void update(Position position, Map<Position, List<ModelElement>> board, int step, int columnCount, int rowCount) { } - @Override public ViewElement getViewElement() { return ViewElement.Road; diff --git a/src/main/java/model/FirefighterBoard.java b/src/main/java/model/FirefighterBoard.java index a4b6bda573f38982463e004fa17488123e151855..ec37d490dfe5299484cb5e47bbfe2e64c9ca22d3 100644 --- a/src/main/java/model/FirefighterBoard.java +++ b/src/main/java/model/FirefighterBoard.java @@ -61,6 +61,7 @@ public class FirefighterBoard implements Board<List<ModelElement>> { } public Map<Position, List<ModelElement>> updateToNextGeneration() { + Map<Position, List<ModelElement>> copieBord=new HashMap<>(); for (Position positionCopie:board.keySet() ) { diff --git a/src/main/java/module-info.java b/src/main/java/module-info.java deleted file mode 100644 index d55a91e09820fe1bc057a9a9c27278d7f838b363..0000000000000000000000000000000000000000 --- a/src/main/java/module-info.java +++ /dev/null @@ -1,9 +0,0 @@ -module firefighter { - requires javafx.controls; - requires javafx.fxml; - requires javafx.graphics; - opens controller to javafx.fxml; - exports app; - opens app to javafx.fxml; - opens controller.fireFigther to javafx.fxml; -} diff --git a/src/main/java/util/Tools.java b/src/main/java/util/Tools.java index c8e284935d33ba0e1859aa22b2f1d2867a38b15a..2c3cbe99d27c3c51e984fc237cec712387418a97 100644 --- a/src/main/java/util/Tools.java +++ b/src/main/java/util/Tools.java @@ -9,6 +9,8 @@ import java.util.*; public class Tools { + + public static List<Position> neighbors(Position position , int rowCount , int columnCount) { List<Position> list = new ArrayList<>(); if (position.row() > 0) list.add(new Position(position.row() - 1, position.column())); @@ -18,7 +20,7 @@ public class Tools { return list; } - public static Position neighborClosestTo(Position position, Map<Position, List<ModelElement>> board, int rowCount , int columnCount) { + public static Position neighborClosestTo(Position position, Map<Position, List<ModelElement>> board, int rowCount , int columnCount,ModelElement element,List<ModelElement>impassableElements) { Set<Position> seen = new HashSet<>(); HashMap<Position, Position> firstMove = new HashMap<>(); Queue<Position> toVisit = new LinkedList<>(neighbors(position,rowCount,columnCount)); @@ -28,18 +30,19 @@ public class Tools { while (!toVisit.isEmpty()) { Position current = toVisit.poll(); if (board.containsKey(current)) { - if (board.get(current).contains(new Fire())){ + if (board.get(current).contains(element)){ return firstMove.get(current); } } for (Position adjacent : neighbors(current, rowCount, columnCount)) { - if (!(seen.contains(adjacent) )) { + if (!(seen.contains(adjacent) && impassableElement(board.getOrDefault(adjacent,List.of()),impassableElements))) { toVisit.add(adjacent); seen.add(adjacent); firstMove.put(adjacent, firstMove.get(current)); - } + } + } } return position; @@ -48,7 +51,7 @@ public class Tools { public static void extinguish(Position position,Map<Position, List<ModelElement>> board) { - board.remove(position); + removeElement(position,board,new Fire()); } public static void addElement(Position position, Map<Position, List<ModelElement>> board, ModelElement element) { @@ -67,8 +70,33 @@ public class Tools { elements.remove(element); board.put(position,elements); } + public static boolean extinguishneighbor(Position position , Map<Position, List<ModelElement>> board,int columnCount, int rowCount){ + boolean bool=false; + for (Position position1 : neighbors(position, rowCount, columnCount)) { + if (board.containsKey(position1)) { + if (board.get(position1).contains(new Fire())) { + extinguish(position1,board); + bool=true; + } + + } + } + return bool; + } + public static boolean impassableElement (List<ModelElement> list,List<ModelElement>impassableElements){ + + for (ModelElement impassableElement:impassableElements + ) { + if (list.contains(impassableElement)) { + return false; + } + } + return true; + + + }