diff --git a/.gradle/8.4/checksums/checksums.lock b/.gradle/8.4/checksums/checksums.lock index abdae5360899fa70db77e1ab43dedcfc0c20ce3d..687f4f2689f36141e55132a03a06f37ea20d28c3 100644 Binary files a/.gradle/8.4/checksums/checksums.lock and b/.gradle/8.4/checksums/checksums.lock differ diff --git a/.gradle/8.4/dependencies-accessors/dependencies-accessors.lock b/.gradle/8.4/dependencies-accessors/dependencies-accessors.lock index 50c7c37995c3fd5f70a3a7bc08234fe04ef3e167..c150f374e8350fdc4d0b480b32e0bc156ecdb4f0 100644 Binary files a/.gradle/8.4/dependencies-accessors/dependencies-accessors.lock and b/.gradle/8.4/dependencies-accessors/dependencies-accessors.lock differ diff --git a/.gradle/8.4/executionHistory/executionHistory.bin b/.gradle/8.4/executionHistory/executionHistory.bin index 0a3faa633e2aecc9966910b232a55f69474f624e..cd185bc582a0f489888b574664842f97427b3965 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 d454e1a97ee25202fe33c1dece8a65a09f3f5e4c..b0eb98842eda3fa8e9d6fde7acfb58ee0504e7c4 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 29960e5fe347978b826bb3b92426e1d2cf45ba9b..a6033345fa086c28fa693303e7b630d6d3d901cb 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 c7e1d1b5f3fdf6cf7070b79cfcee1e5cad34c2bb..da13ab9353ced83645c5559a785a24c30dd34000 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 b97d1a87e2a97baf84d53cc25404d4a715dc5a61..140ab407c66bf092f43e885dfedaf6efe6f82fea 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 b01eca29ad3494c03dfe3dc1e37684bb11a9139f..72a5e081814c347e779fc9a70999b4a39d950740 100644 Binary files a/.gradle/buildOutputCleanup/buildOutputCleanup.lock and b/.gradle/buildOutputCleanup/buildOutputCleanup.lock differ diff --git a/.gradle/buildOutputCleanup/cache.properties b/.gradle/buildOutputCleanup/cache.properties index bc0da4ca0f7952d0db44bc4b00fba59585e4ff5e..90154715c19ffcb4cfd832c6c62fcfe3c445afac 100644 --- a/.gradle/buildOutputCleanup/cache.properties +++ b/.gradle/buildOutputCleanup/cache.properties @@ -1,2 +1,2 @@ -#Tue Nov 14 22:02:54 CET 2023 +#Mon Nov 13 20:29:54 CET 2023 gradle.version=8.4 diff --git a/.gradle/buildOutputCleanup/outputFiles.bin b/.gradle/buildOutputCleanup/outputFiles.bin index 0aae8ca63b8cb37459939b604e62b6b6a9db8c24..e4dbcd26775b77fdd318f2e906aa0ebb05955632 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 edddcf04fd2b2201f6a075e19bb10e4635d87bdc..e892a491542e10fac2c062d573d9d0cd0dc4280c 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 8354b4b5e9c51c9a95e1ee282454bcb74bb2799f..181db60987ef9e8df666c370fc44325db0cb5a41 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/ExtinguishFire/ExtinguishFire.class b/build/classes/java/main/model/ExtinguishFire/ExtinguishFire.class index 6f2ee628168d8278cdfdfcd6b1dcf054d0de7134..a4d622e74ad0dac8a1e1ee24f055fadd19df68df 100644 Binary files a/build/classes/java/main/model/ExtinguishFire/ExtinguishFire.class and b/build/classes/java/main/model/ExtinguishFire/ExtinguishFire.class differ diff --git a/build/classes/java/main/model/ExtinguishFire/FireFighter.class b/build/classes/java/main/model/ExtinguishFire/FireFighter.class index fcc4ef03eff562cb121ef55794860a3daacf0c37..02776eb6f209146e6f2de1891a6ecafbc4aa688a 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/Flammable/Fire.class b/build/classes/java/main/model/Flammable/Fire.class index dbc166e9ee502ac6e65765ab6e3c1b154cd63a20..a63719c958047acc25830722191a24670a97cbad 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 index 4a62fd7300bf6f83c5e5d56996109e985f2f0393..bf120cd5de3e083cfef4bb7079bfbbbd2f05fb97 100644 Binary files a/build/classes/java/main/model/Flammable/Flammable.class and b/build/classes/java/main/model/Flammable/Flammable.class differ diff --git a/build/classes/java/main/model/GameBoard.class b/build/classes/java/main/model/GameBoard.class index cb2ca44314073aaa3df472fc2b6ef8262af9a836..e7f7e68c6824b75a0258c2c6ecb4cd1b9dee4da3 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/view/FirefighterGrid.class b/build/classes/java/main/view/FirefighterGrid.class index 30eaace75e76ed424baa17b60e2fc62e70bead04..d2bbe7e11dd4d28c3fba73284af14ce15b59f73f 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/previous-compilation-data.bin b/build/tmp/compileJava/previous-compilation-data.bin index fdbc7fa6a302f18ac1388e657e7b4c5637763e03..6a2c8311aad2bec86286b0f270caab2751d19e4b 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/controller/Controller.java b/src/main/java/controller/Controller.java index 260a1df48eae1a5eb6b71d1df5d95b561da5e66c..81b9df828351be80fe30e3a28bb32a842ed3e72d 100644 --- a/src/main/java/controller/Controller.java +++ b/src/main/java/controller/Controller.java @@ -66,7 +66,7 @@ public class Controller { model.BoardElement[][] boardElements = new model.BoardElement[rowCount][columnCount]; for(int column = 0; column < columnCount; column++) for(int row = 0; row < rowCount; row++){ - if(board.getElementPosition().containsKey(new Position(row,column))){ + if(board.getElementPosition().containsKey(new Position(row,column)) && board.getElementPosition().get(new Position(row,column)).size()!=0){ boardElements[row][column] = board.getElementPosition().get(new Position(row,column)).get(0); }else{ boardElements[row][column]=new EmptyElement(); diff --git a/src/main/java/model/ExtinguishFire/ExtinguishFire.java b/src/main/java/model/ExtinguishFire/ExtinguishFire.java index 4e5e787dffbd8188a33ba9729a5aed8aa8aa4011..006a184b8dafa69d1dd97417c753609aa993d12c 100644 --- a/src/main/java/model/ExtinguishFire/ExtinguishFire.java +++ b/src/main/java/model/ExtinguishFire/ExtinguishFire.java @@ -6,10 +6,9 @@ import util.Position; import java.util.ArrayList; import java.util.HashMap; -import java.util.List; public interface ExtinguishFire extends BoardElement { - void update(GameBoard gameBoard , Position position); + 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 0d7aa63706ebff471c18b73527a9f708c2d18126..060a5de7a4397caf1b72ce6fb7af84db03dcf117 100644 --- a/src/main/java/model/ExtinguishFire/FireFighter.java +++ b/src/main/java/model/ExtinguishFire/FireFighter.java @@ -66,14 +66,10 @@ public class FireFighter implements ExtinguishFire { } @Override - public void update(GameBoard gameBoard, Position position) { + public void update(GameBoard gameBoard, Position position, HashMap<Position, ArrayList<BoardElement>> newElementPosition, ArrayList<Position> extinguishPosition) { - HashMap<Position, ArrayList<BoardElement>> elementPositionCopie = new HashMap<>(); - for (Map.Entry<Position, ArrayList<BoardElement>> entry : elementPosition.entrySet()){ - elementPositionCopie.put(entry.getKey(),entry.getValue()); - } List<Position> firePositions = new ArrayList<>(); - for (Map.Entry<Position, ArrayList<BoardElement>> entry : elementPositionCopie.entrySet()) { + for (Map.Entry<Position, ArrayList<BoardElement>> entry : elementPosition.entrySet()) { for (BoardElement element : entry.getValue()) { if (element.accept(new FireFinder())) { firePositions.add(entry.getKey()); @@ -81,32 +77,22 @@ public class FireFighter implements ExtinguishFire { } } Position newFirefighterPosition = gameBoard.neighborClosestToFire(position); - if(elementPositionCopie.containsKey(newFirefighterPosition)){ - elementPositionCopie.get(newFirefighterPosition).add(new FireFighter(Color.BLUE)); + if(newElementPosition.containsKey(newFirefighterPosition)){ + newElementPosition.get(newFirefighterPosition).add(this); } else{ ArrayList<BoardElement> boardElements = new ArrayList<>(); - boardElements.add(new FireFighter(Color.BLUE)); - elementPosition.put(newFirefighterPosition,boardElements); + boardElements.add(this); + newElementPosition.put(newFirefighterPosition,boardElements); } - gameBoard.extinguish(newFirefighterPosition); + extinguishPosition.add(newFirefighterPosition); List<Position> neighborFirePositions = gameBoard.neighbors(newFirefighterPosition).stream() .filter(firePositions::contains).toList(); - for(Position newposition : neighborFirePositions){ - if(elementPositionCopie.containsKey(newposition)){ - elementPosition.get(newposition).add(new FireFighter(Color.BLUE)); - } - else{ - ArrayList<BoardElement> boardElements = new ArrayList<>(); - boardElements.add(new FireFighter(Color.BLUE)); - elementPosition.put(newposition,boardElements); - } - } - for(Position firePosition : neighborFirePositions) { - gameBoard.extinguish(firePosition); + extinguishPosition.add(firePosition); } } + } diff --git a/src/main/java/model/Flammable/Fire.java b/src/main/java/model/Flammable/Fire.java index e3bee196be794157e60e9a463f70cda724448502..a37e88732c89ec6a270597877b45723785d2234c 100644 --- a/src/main/java/model/Flammable/Fire.java +++ b/src/main/java/model/Flammable/Fire.java @@ -64,19 +64,29 @@ public class Fire implements Flammable{ } @Override // TODO: 15/11/2023 - public void update(GameBoard gameBoard , Position position) { - + public void update(GameBoard gameBoard , Position position,HashMap<Position, ArrayList<BoardElement>> newElementPosition, ArrayList<Position> extinguishPosition) { + if(extinguishPosition.contains(position)){ + return ; + } if (gameBoard.stepNumber() % 2 == 0) { - List<Position> newFirePositions = new ArrayList<>(); - newFirePositions.addAll(gameBoard.neighbors(position)); - for(Position newPosition : newFirePositions){ + List<Position> newPositions = new ArrayList<>(); + newPositions.addAll(gameBoard.neighbors(position)); + if(newElementPosition.containsKey(position)) + newElementPosition.get(position).add(this); + else { + newElementPosition.put(position,(new ArrayList<>())); + newElementPosition.get(position).add(this); + } + for(Position newPosition : newPositions){ + //if(extinguishPosition.contains(newPosition)) + //continue; if(GameBoard.elementPosition.containsKey(newPosition)) { for(BoardElement boardElement : GameBoard.elementPosition.get(newPosition)){ if(boardElement.accept(new FireFinder()) && boardElement.accept(new CrossRoad()) && boardElement.accept(new CrossMountain())){ break; } else if(!boardElement.accept( new FireFinder())&& !boardElement.accept(new CrossRoad()) && !boardElement.accept(new CrossMountain())){ - GameBoard.elementPosition.get(newPosition).add(this); + newElementPosition.get(newPosition).add(this); } } @@ -84,11 +94,18 @@ public class Fire implements Flammable{ else{ ArrayList<BoardElement> boardElements = new ArrayList<>(); boardElements.add(this); - GameBoard.elementPosition.put(newPosition,boardElements); + newElementPosition.put(newPosition,boardElements); System.out.println(GameBoard.elementPosition.get(position).get(0).getColor()); } } + }else{ + if(newElementPosition.containsKey(position)) + newElementPosition.get(position).add(this); + else { + newElementPosition.put(position,(new ArrayList<>())); + newElementPosition.get(position).add(this); + } } } diff --git a/src/main/java/model/Flammable/Flammable.java b/src/main/java/model/Flammable/Flammable.java index b21f82b9a9ddc487a95a82902a89d4631ae608ce..325c6d3012ce69d730224122c935bfd377258c7a 100644 --- a/src/main/java/model/Flammable/Flammable.java +++ b/src/main/java/model/Flammable/Flammable.java @@ -10,5 +10,5 @@ import java.util.List; public interface Flammable extends BoardElement{ - void update(GameBoard gameBoard, Position position); + 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 216b267c9659dee78e790d0bb092e3ea284f2546..5b4773cbdde757e725dbe13b2a7d4733c4f9c6d0 100644 --- a/src/main/java/model/GameBoard.java +++ b/src/main/java/model/GameBoard.java @@ -40,29 +40,35 @@ public class GameBoard implements Board{ } @Override public void updateToNextGeneration() { - HashMap<Position, ArrayList<BoardElement>> elementPositionCopie = new HashMap<>(); - for (Map.Entry<Position, ArrayList<BoardElement>> entry : this.elementPosition.entrySet()){ - elementPositionCopie.put(entry.getKey(),entry.getValue()); - } - for (Map.Entry<Position, ArrayList<BoardElement>> entry : elementPositionCopie.entrySet()){ + HashMap<Position, ArrayList<BoardElement>> newElementPosition = new HashMap<>(); + ArrayList<Position> extinguishPosition = new ArrayList<>(); + for (Map.Entry<Position, ArrayList<BoardElement>> entry : elementPosition.entrySet()){ for(BoardElement element : entry.getValue()){ if (!element.accept(new FireFinder())){ ExtinguishFire element1 = (ExtinguishFire) element; - element1.update(this,entry.getKey()); + element1.update(this,entry.getKey(),newElementPosition,extinguishPosition); } } } - /*for (Map.Entry<Position, ArrayList<BoardElement>> entryCopie : elementPositionCopie.entrySet()){ - for(BoardElement element : entryCopie.getValue()){ - + 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,entryCopie.getKey()); + element1.update(this,entry.getKey(),newElementPosition,extinguishPosition); } } - }*/ + } + elementPosition.clear(); + extinguishPosition.clear(); + for (Map.Entry<Position, ArrayList<BoardElement>> entry : newElementPosition.entrySet()){ + if(elementPosition.containsKey(entry.getKey())){ + elementPosition.get(entry.getKey()).addAll(entry.getValue()); + }else{ + elementPosition.put(entry.getKey(),entry.getValue()); + } + } step++; @@ -112,12 +118,13 @@ public class GameBoard implements Board{ } public Position neighborClosestToFire(Position position) { + FireFinder fireFinder = new FireFinder(); Set<Position> firePositions = new HashSet<>(); Set<Position> seen = new HashSet<>(); HashMap<Position, Position> firstMove = new HashMap<>(); Queue<Position> toVisit = new LinkedList<>(neighbors(position)); - for (Map.Entry<Position, ArrayList<BoardElement>> entry : this.elementPosition.entrySet()){ + for (Map.Entry<Position, ArrayList<BoardElement>> entry : elementPosition.entrySet()){ for(BoardElement element : entry.getValue()){ if (element.accept(fireFinder)){ firePositions.add(entry.getKey()); @@ -140,14 +147,22 @@ public class GameBoard implements Board{ return position; } - public void extinguish(Position position) { + /*public void extinguish(Position position) { FireFinder fireFinder = new FireFinder(); - for (BoardElement boardElement : elementPosition.get(position)){ - if (boardElement.accept(fireFinder)){ + HashMap<Position, ArrayList<BoardElement>> elementPositionCopie = new HashMap<>(); + for (Map.Entry<Position, ArrayList<BoardElement>> entry : this.elementPosition.entrySet()){ + elementPositionCopie.put(entry.getKey(),entry.getValue()); + } + for (BoardElement boardElement : elementPositionCopie.get(position)){ + if (boardElement.accept(fireFinder) && elementPosition.get(position).size()!=0){ this.elementPosition.get(position).remove(boardElement); break; } + if (boardElement.accept(fireFinder) && elementPosition.get(position).size()==0){ + this.elementPosition.get(position).remove(boardElement); + this.elementPosition.remove(position); + } } - } + }*/ } diff --git a/src/main/java/view/FirefighterGrid.java b/src/main/java/view/FirefighterGrid.java index e81ddfd50defe3083d66f20b14bbc4de5a700caf..042dc7b54ac7b2d11202a6d3b53727bf1c450baf 100644 --- a/src/main/java/view/FirefighterGrid.java +++ b/src/main/java/view/FirefighterGrid.java @@ -20,8 +20,8 @@ public class FirefighterGrid extends Canvas implements Grid<model.BoardElement>{ @Override public void repaint(List<Pair<Position, model.BoardElement>> positionedElements) { - //clear(positionedElements); - //paint(positionedElements); + clear(positionedElements); + paint(positionedElements); paintLines(); } @@ -34,7 +34,7 @@ public class FirefighterGrid extends Canvas implements Grid<model.BoardElement>{ private void paint(List<Pair<Position, BoardElement>> positionedElements) { for(Pair<Position, BoardElement> pair : positionedElements){ - //paintElementAtPosition(pair.getValue(), pair.getKey()); + paintElementAtPosition(pair.getValue(), pair.getKey()); } } diff --git a/src/test/java/model/FirefighterBoardTest.java b/src/test/java/model/FirefighterBoardTest.java index 24c7e5d160a01c26a30497768764aba0c494c4d7..049ad8d42f03ffe5d376c26e64c0a4dc655e572f 100644 --- a/src/test/java/model/FirefighterBoardTest.java +++ b/src/test/java/model/FirefighterBoardTest.java @@ -7,33 +7,33 @@ import java.util.List; import static org.assertj.core.api.Assertions.*; -/*public class FirefighterBoardTest { +public class FirefighterBoardTest {/* @Test void testColumnCount(){ - Board<List<ModelElement>> board = new FirefighterBoard(20, 10, 1, 3); + Board board = new GameBoard(20, 10, 1, 3); assertThat(board.columnCount()).isEqualTo(20); } @Test void testRowCount(){ - Board<List<ModelElement>> board = new FirefighterBoard(20, 10, 1, 3); + Board<List board = new GameBoard(20, 10, 1, 3); assertThat(board.rowCount()).isEqualTo(10); } @Test void testStepNumber(){ - Board<List<ModelElement>> board = new FirefighterBoard(20, 10, 1, 3); + Board board = new GameBoard(20, 10, 1, 3); for(int index = 0; index < 10; index++){ assertThat(board.stepNumber()).isEqualTo(index); board.updateToNextGeneration(); } assertThat(board.stepNumber()).isEqualTo(10); } - @Test - void testGetState_afterSet(){ - Board<List<ModelElement>> board = new FirefighterBoard(20, 10, 0, 0); + /*@Test + void testGetState_afterSet(){ + Board<List<BoardElement>> board = new GameBoard(20, 10, 0, 0); Position position = new Position(1,2); assertThat(board.getState(position)).isEmpty(); - board.setState(List.of(ModelElement.FIRE), position); + board.setState(List.of(BoardElement.FIRE), position); assertThat(board.getState(position)).containsExactly(ModelElement.FIRE); - } + }*/ -}*/ +}