diff --git a/.gradle/8.4/executionHistory/executionHistory.bin b/.gradle/8.4/executionHistory/executionHistory.bin index 081f2727a4b72073919321bcc6c20e24f4f173c9..f84ef8498b8b5049936eb04fec700633f625bc0b 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 19d069dc1bb8acfdd4ceb1c9555c46f0c800308d..584c58c264ded8a4cc878c1ef260c758712aa6bc 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 c9a08a77d62dd366ea28a84b10887c3805d1861e..29043a2bc1179d522a50cf9b909ae36f711ce3eb 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 6a377ff71b33b12ad96936f7c7774a09f9f0bec6..797f7ce222793c73535024fee2ac478c8740e1d0 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 43e6b8fe7daa35a36ad8ffdc44fda913b9a1c3c4..0299e170bd1a58c6114ddd2a115bcc7b95cf1738 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 3c1b49a3a3c7cef009c40d886fcf5344a686328a..8f4c4f8be1eafa911e0b426006694127242ebc78 100644 Binary files a/.gradle/buildOutputCleanup/buildOutputCleanup.lock and b/.gradle/buildOutputCleanup/buildOutputCleanup.lock differ diff --git a/build/tmp/compileJava/previous-compilation-data.bin b/build/tmp/compileJava/previous-compilation-data.bin index 93d41b69789889bb0071a5ebfdf757a3f009a5f5..9f40e871db1454f66acd6b65c95c2a1c341f8807 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/model/ModelElement.java b/src/main/java/model/ModelElement.java index 2b2122b19bf0480928820f9e0ba4ebb5b73fd230..fa0297c53fa8e6c9d2f87bcfa835e466980fb715 100644 --- a/src/main/java/model/ModelElement.java +++ b/src/main/java/model/ModelElement.java @@ -2,5 +2,5 @@ package model; //this class represents two types of constant Firefighter or fire public enum ModelElement { - FIREFIGHTER, FIRE + FIREFIGHTER, FIRE , } diff --git a/src/main/java/newmodel/Fboard.java b/src/main/java/newmodel/Fboard.java index e62afa5372a93cd3cdaab205eca9f0c8da7441b1..853728fe44364c439e42b15c9af5395c70f32310 100644 --- a/src/main/java/newmodel/Fboard.java +++ b/src/main/java/newmodel/Fboard.java @@ -1,7 +1,7 @@ package newmodel; - import model.ModelElement; import util.Position; +import view.ViewElement; import java.util.*; @@ -31,12 +31,12 @@ public class Fboard { public List<Position> updateToNextGeneration() { List<Position> result = new ArrayList<>(); for(item item : items){ - if(item.getID()==1){ + if(item.getID()==1 && step % 2 ==0){ result.addAll(item.update(this)); } } for(item item : items){ - if(item.getID()==0 && step % 2 ==0){ + if(item.getID()==0){ result.addAll(item.update(this)); } } @@ -53,12 +53,12 @@ public class Fboard { } public void initializeElements() { for(item e: items) { - if(e.getID()==0){ + if(e.getID()==1){ e.initialize(); } } for(item e:items){ - if(e.getID()==1){ + if(e.getID()==0){ e.initialize(); } } @@ -67,7 +67,7 @@ public class Fboard { public Fire getFire() { Fire x = null; for (item e : items) { - if (e.getID() == 0) { + if (e.getID() == 1) { x = (Fire) e; break; } @@ -86,7 +86,7 @@ public class Fboard { public Position neighborClosestToFire(Position position) { Set<Position> seen = new HashSet<>(); HashMap<Position, Position> firstMove = new HashMap<>(); - Queue<Position> toVisit = new LinkedList<>(this.neighbors(position)); //Queue is initialised with the neighbors of position + Queue<Position> toVisit = new LinkedList<>(this.neighbors(position)); for (Position initialMove : toVisit) firstMove.put(initialMove, initialMove); while (!toVisit.isEmpty()) { @@ -103,14 +103,19 @@ public class Fboard { return position; } + public List<ModelElement> getState(Position position){ List<ModelElement> result = new ArrayList<>(); for (item e :items) { if (e.getPositions().contains(position) && e.getID() == 1) { - result.add(e.getState());break; + result.add(e.getState()); + } + } + + for (item e :items) { + if (e.getPositions().contains(position) && e.getID() == 0) { + result.add(e.getState()); } - if (e.getPositions().contains(position) && e.getID() == 0) - result.add(getFire().getState());break; } return result; } diff --git a/src/main/java/newmodel/Fire.java b/src/main/java/newmodel/Fire.java index f3b64ee6a8b254087569aa9354a0b6725cdd75b3..5bf9ef0aa4c4d377b443938ba450f881f39ef95d 100644 --- a/src/main/java/newmodel/Fire.java +++ b/src/main/java/newmodel/Fire.java @@ -13,7 +13,7 @@ public class Fire implements item { private final ModelElement state; private final Random randomGenerator = new Random(); - private final int ID=0; + private final int ID=1; public Fire(int initialFireCount) { this.initialFireCount = initialFireCount; @@ -27,7 +27,7 @@ public class Fire implements item { newFirePositions.addAll(board.neighbors(fire)); } firePositions.addAll(newFirePositions); - return newFirePositions; + return firePositions; } @@ -45,7 +45,7 @@ public class Fire implements item { firePositions.add(randomPosition()); } - @Override + public List<Position> getPositions() { return firePositions; } diff --git a/src/main/java/newmodel/FireFighter.java b/src/main/java/newmodel/FireFighter.java index 9dc5cb5934732b5b0f7a0dede8ab39c8ab2c2b99..2ca97a898347317a7955272bdf09a0a2bd617466 100644 --- a/src/main/java/newmodel/FireFighter.java +++ b/src/main/java/newmodel/FireFighter.java @@ -4,7 +4,7 @@ import util.Position; import java.util.ArrayList; import java.util.List; import java.util.Random; -import model.ModelElement; + public class FireFighter extends Extinguisher { private final ModelElement state; @@ -13,7 +13,7 @@ public class FireFighter extends Extinguisher { private final int initialFirefighterCount; - private int ID=1; + private final int ID=0; public FireFighter(int initialFirefighterCount){ this.initialFirefighterCount=initialFirefighterCount; @@ -22,23 +22,24 @@ public class FireFighter extends Extinguisher { public List<Position> update(Fboard board) { - List<Position> result = new ArrayList<>(); - List<Position> firefighterNewPositions = new ArrayList<>(); - for (Position firefighterPosition : firefighterPositions) { - Position newFirefighterPosition = board.neighborClosestToFire(firefighterPosition); - firefighterNewPositions.add(newFirefighterPosition); - extinguish(newFirefighterPosition,board); - result.add(firefighterPosition); - result.add(newFirefighterPosition); - List<Position> neighborFirePositions = board.neighbors(newFirefighterPosition).stream() - .filter(board.getFire().getPositions()::contains).toList(); //this code create a list filtred with only the fire positions that are close to the newfirefighter position - for(Position firePosition : neighborFirePositions) //and exist in the firepositions list also - extinguish(firePosition,board); - result.addAll(neighborFirePositions); - } - firefighterPositions = firefighterNewPositions; - return result; + List<Position> modifiedPosition = new ArrayList<>(); + List<Position> firefighterNewPositions = new ArrayList<>(); + for (Position firefighterPosition : firefighterPositions) { + Position newFirefighterPosition = board.neighborClosestToFire(firefighterPosition); + firefighterNewPositions.add(newFirefighterPosition); + extinguish(newFirefighterPosition,board); + modifiedPosition.add(firefighterPosition); + modifiedPosition.add(newFirefighterPosition); + List<Position> neighborFirePositions = board.neighbors(newFirefighterPosition).stream() + .filter(board.getFire().getPositions()::contains).toList(); + for(Position firePosition : neighborFirePositions) + extinguish(firePosition,board); + modifiedPosition.addAll(neighborFirePositions); } + firefighterPositions = firefighterNewPositions; + return modifiedPosition; + } + public void extinguish(Position position,Fboard board) { @@ -52,7 +53,6 @@ public class FireFighter extends Extinguisher { // implementi liha pattern visiteur public int getID() { - return this.ID; }