diff --git a/.gradle/8.10.2/executionHistory/executionHistory.bin b/.gradle/8.10.2/executionHistory/executionHistory.bin index 97b9b48bbdd5886fbb8a82db0b1683936f142b3a..e355aa2287bd5e0f1c3ff03697d466d9496a06c0 100644 Binary files a/.gradle/8.10.2/executionHistory/executionHistory.bin and b/.gradle/8.10.2/executionHistory/executionHistory.bin differ diff --git a/.gradle/8.10.2/executionHistory/executionHistory.lock b/.gradle/8.10.2/executionHistory/executionHistory.lock index 171bc6acfb0e06b4b6c3cecab799a21b784b60ee..47b1fe723adb49a563d8c731d828e28d88ca2963 100644 Binary files a/.gradle/8.10.2/executionHistory/executionHistory.lock and b/.gradle/8.10.2/executionHistory/executionHistory.lock differ diff --git a/.gradle/8.10.2/fileHashes/fileHashes.bin b/.gradle/8.10.2/fileHashes/fileHashes.bin index 1b5cbc73c6e61e5bf820916145dfd7bf1d415d90..126205d93af5e1d5f3c159e10c2c1574e7f4a2d2 100644 Binary files a/.gradle/8.10.2/fileHashes/fileHashes.bin and b/.gradle/8.10.2/fileHashes/fileHashes.bin differ diff --git a/.gradle/8.10.2/fileHashes/fileHashes.lock b/.gradle/8.10.2/fileHashes/fileHashes.lock index 95bab72c139aec6844f8b0fcd849a0ddc30fa572..56dcf9b95c2b028d13ec0f3f34b338ad9e02551e 100644 Binary files a/.gradle/8.10.2/fileHashes/fileHashes.lock and b/.gradle/8.10.2/fileHashes/fileHashes.lock differ diff --git a/.gradle/8.10.2/fileHashes/resourceHashesCache.bin b/.gradle/8.10.2/fileHashes/resourceHashesCache.bin index 352033907f59a15563ae59d12b450338bd14ae98..48e6f72e72c2ef3eadd50630f7dde7a18cadf65b 100644 Binary files a/.gradle/8.10.2/fileHashes/resourceHashesCache.bin and b/.gradle/8.10.2/fileHashes/resourceHashesCache.bin differ diff --git a/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/.gradle/buildOutputCleanup/buildOutputCleanup.lock index f08260a3a186325b43aa1f1263fafa4e06b8d5be..300e8a5a0a0c9b8c3c4829f56649d150fd04b8fe 100644 Binary files a/.gradle/buildOutputCleanup/buildOutputCleanup.lock and b/.gradle/buildOutputCleanup/buildOutputCleanup.lock differ diff --git a/build/classes/java/main/model/FirefighterBoard.class b/build/classes/java/main/model/FirefighterBoard.class index 3e742235542383603f5bec9a42fe8c9c5fde97cb..88cc5de061dc98369fb8cad93449d873030dfdee 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/model/FirefighterManager.class b/build/classes/java/main/model/FirefighterManager.class index 89b6c24ed9ef15fad7b0854825234ded5a00d66a..409f7446ed1fcdee1bb253c76f39f4525a39d7b1 100644 Binary files a/build/classes/java/main/model/FirefighterManager.class and b/build/classes/java/main/model/FirefighterManager.class differ diff --git a/build/libs/firefighter.jar b/build/libs/firefighter.jar index 499a4746df06417ae513e85862d43c1009313872..d8dab65624dde65d70f5b73fdf1561585519888a 100644 Binary files a/build/libs/firefighter.jar and b/build/libs/firefighter.jar differ diff --git a/build/tmp/compileJava/previous-compilation-data.bin b/build/tmp/compileJava/previous-compilation-data.bin index 1359edc24a31a1f301ffff7a8d63ae879abe849e..d99f127bc5bc43cb13f95f102d8b43cfa8c61d5e 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 7305525e8f61db2eae6c5ef7227f6dae1597365f..9213bb9572483fa8e70712b34108f27ef1a6776d 100644 --- a/src/main/java/controller/Controller.java +++ b/src/main/java/controller/Controller.java @@ -45,6 +45,10 @@ public class Controller { // Ensure initial UI state is consistent updateGenerationLabel(); pauseToggleButton.setSelected(true); + stopSimulation(); + board.reset(); + grid.repaint(); + updateGenerationLabel(); } diff --git a/src/main/java/model/FirefighterBoard.java b/src/main/java/model/FirefighterBoard.java index 7a45e30989dca0f17f70252a47a86bee0af30ffb..5fd8107b0fed81ab10893d6a7a58a8d28d604350 100644 --- a/src/main/java/model/FirefighterBoard.java +++ b/src/main/java/model/FirefighterBoard.java @@ -124,9 +124,10 @@ public class FirefighterBoard implements Board<List<ModelElement>> { // Update firefighter positions FirefighterManager firefighterManager = new FirefighterManager(new SimpleFirefighterMovementStrategy()); - List<Position> firefighterModified = firefighterManager.moveFireFighters(firePositions, neighbors); + List<Position> firefighterModified = firefighterManager.moveFireFighters(firePositions, neighbors, firefighterPositions); modifiedPositions.addAll(firefighterModified); - firefighterPositions = firefighterManager.getFirefighterPositions(); + this.firefighterPositions.clear(); + this.firefighterPositions = firefighterModified; // After firefighters move, extinguish fire in the neighborhood extinguishNearbyFire(modifiedPositions); diff --git a/src/main/java/model/FirefighterManager.java b/src/main/java/model/FirefighterManager.java index ec12a1350431a100df56266a7742ff841628f078..56c77b83fab2fe9c0faacbe23f1af1a12c13b6e1 100644 --- a/src/main/java/model/FirefighterManager.java +++ b/src/main/java/model/FirefighterManager.java @@ -20,30 +20,24 @@ public class FirefighterManager { } } - public List<Position> moveFireFighters(Set<Position> firePositions, Map<Position, List<Position>> neighbors) { + public List<Position> moveFireFighters(Set<Position> firePositions, Map<Position, List<Position>> neighbors,List<Position> firefighterPositions) { List<Position> modifiedPositions = new ArrayList<>(); - List<Position> newPositions = new ArrayList<>(); + for (Position firefighterPosition : firefighterPositions) { // Move firefighters towards the nearest fire Position newPosition = movementStrategy.moveToClosestFire(firefighterPosition, firePositions, neighbors); + System.out.println(newPosition); + System.out.println(firefighterPosition); + - // Extinguish fire in the neighboring cells - List<Position> nearbyFires = neighbors.get(newPosition); - for (Position firePosition : nearbyFires) { - if (firePositions.contains(firePosition)) { - firePositions.remove(firePosition); // Extinguish the fire - modifiedPositions.add(firePosition); // Track the modified fire position - } - } // Update the firefighter's new position - newPositions.add(newPosition); - modifiedPositions.add(firefighterPosition); // Track the original firefighter position + modifiedPositions.add(newPosition); // Track the new firefighter position } - - firefighterPositions = newPositions; // Update the firefighter positions list with new positions + firefighterPositions.clear(); + firefighterPositions = modifiedPositions; // Update the firefighter positions list with new positions return modifiedPositions; } diff --git a/src/main/java/model/SimpleFirefighterMovementStrategy.java b/src/main/java/model/SimpleFirefighterMovementStrategy.java index a8f59ec2a646f3cb564eed761865d002c847a492..31278aa7fbbecc53d761305f9b50cf85711cdbad 100644 --- a/src/main/java/model/SimpleFirefighterMovementStrategy.java +++ b/src/main/java/model/SimpleFirefighterMovementStrategy.java @@ -8,6 +8,7 @@ public class SimpleFirefighterMovementStrategy implements FirefighterMovementStr @Override public Position moveToClosestFire(Position current, Set<Position> firePositions, Map<Position, List<Position>> neighbors) { Position closestFire = null; + Position newposition = current; int minDistance = Integer.MAX_VALUE; for (Position fire : firePositions) { @@ -18,9 +19,20 @@ public class SimpleFirefighterMovementStrategy implements FirefighterMovementStr } } - return closestFire != null && !closestFire.equals(current) ? closestFire : current; + if (closestFire != null) { + if (current.getRow()!=closestFire.getRow()){ + if (current.getRow()<closestFire.getRow()) { newposition = new Position(current.getRow()+1, current.getCol()); } + else { newposition = new Position(current.getRow()-1, current.getCol()); } + } + else { + if(current.getCol()<closestFire.getCol()) { newposition = new Position(current.getRow(), current.getCol()+1);} + else { newposition = new Position(current.getRow(), current.getCol()-1); } + } + } + return newposition; } + private int calculateDistance(Position a, Position b) { // Use Manhattan distance return Math.abs(a.getRow() - b.getRow()) + Math.abs(a.getCol() - b.getCol());