diff --git a/.gradle/8.4/executionHistory/executionHistory.bin b/.gradle/8.4/executionHistory/executionHistory.bin index 4cd994144b7c49c00b59d5908df5e68ec1aea182..081f2727a4b72073919321bcc6c20e24f4f173c9 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 db95200df76d7b9706b280268c7dc618e0a8702c..19d069dc1bb8acfdd4ceb1c9555c46f0c800308d 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 67e8ff05ab0a6e4dade0b84d3957695c162245be..c9a08a77d62dd366ea28a84b10887c3805d1861e 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 9fba0d1dc8c31802d659ebd90dce22e5fa0f45bb..6a377ff71b33b12ad96936f7c7774a09f9f0bec6 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 14704f066ee2771d97546fac50b663472c06d6a2..43e6b8fe7daa35a36ad8ffdc44fda913b9a1c3c4 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 788a578424a02c6e1b81bbf4c0c7b9a3868cf577..3c1b49a3a3c7cef009c40d886fcf5344a686328a 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 1a2449f9ad6f5d724161c172966ab4ed62d399c0..d8932ec1d7481b9d4ea1b36dd567a54507db259a 100644 Binary files a/.gradle/buildOutputCleanup/outputFiles.bin and b/.gradle/buildOutputCleanup/outputFiles.bin differ diff --git a/build/classes/java/main/controller/Controller.class b/build/classes/java/main/controller/Controller.class index d6fd48dc5da4617ba2831015834be3b4e4fbcbec..c6d314abae95d116bb74b2b05f1aa412f0ff5de8 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/view/FirefighterGrid.class b/build/classes/java/main/view/FirefighterGrid.class index 49e2e8b6d5f19a7d80523992779b46329ab967b6..7450774fa10adcd12566a08c493621a338c090f7 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/resources/main/view/view.fxml b/build/resources/main/view/view.fxml index 3f19ac9de44d6f0b571dc29e43bf15ff2ebeff79..336ffa315645baacbe25bf59171d2ff6d867b9c5 100644 --- a/build/resources/main/view/view.fxml +++ b/build/resources/main/view/view.fxml @@ -33,7 +33,7 @@ mnemonicParsing="false" onAction="#pauseToggleButtonAction" prefHeight="24.0" prefWidth="200.0" styleClass="button" text="Pause"/> </VBox> - <FirefighterGrid fx:id="grid" width="1000.0" height="1000.0" + <FirefighterGrid fx:id="grid" xmlns="http://javafx.com/javafx" xmlns:fx="http://javafx.com/fxml"> </FirefighterGrid> diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/SimulatorApplication.class.uniqueId0 b/build/tmp/compileJava/compileTransaction/stash-dir/SimulatorApplication.class.uniqueId0 deleted file mode 100644 index e0ff69034ab3b3dca33d7331e7fbd83218f359f0..0000000000000000000000000000000000000000 Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/SimulatorApplication.class.uniqueId0 and /dev/null differ diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/SimulatorMain.class.uniqueId2 b/build/tmp/compileJava/compileTransaction/stash-dir/SimulatorMain.class.uniqueId2 deleted file mode 100644 index b426382855daa4f8e3ff421f7108c0b298a18d65..0000000000000000000000000000000000000000 Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/SimulatorMain.class.uniqueId2 and /dev/null differ diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/module-info.class.uniqueId1 b/build/tmp/compileJava/compileTransaction/stash-dir/module-info.class.uniqueId1 deleted file mode 100644 index 022c1fa844a25744d0a811cb92acc69ae1261c3d..0000000000000000000000000000000000000000 Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/module-info.class.uniqueId1 and /dev/null differ diff --git a/build/tmp/compileJava/previous-compilation-data.bin b/build/tmp/compileJava/previous-compilation-data.bin index 224689e65c0e5d8064ac452405dd2ad0ca3b3fa7..93d41b69789889bb0071a5ebfdf757a3f009a5f5 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 918bab88b9a57fc860bf52974678935e8458c1cf..5dd8dd92505bdcd09b92452f70b0148cffe3e8d5 100644 --- a/src/main/java/controller/Controller.java +++ b/src/main/java/controller/Controller.java @@ -27,7 +27,7 @@ import static java.util.Objects.requireNonNull; public class Controller { - public static final int PERIOD_IN_MILLISECONDS = 500; + public static final int PERIOD_IN_MILLISECONDS = 50; @FXML public Button restartButton; @FXML @@ -151,10 +151,10 @@ public class Controller { int rowCount, int initialFireCount, int initialFirefighterCount) { grid.setDimensions(columnCount, rowCount, squareWidth, squareHeight); List<item> items= new ArrayList<>(); - List<item> list= new ArrayList<>(); - list.add(new Fire(initialFireCount)); - list.add(new FireFighter(initialFirefighterCount,b)); + items.add(new Fire(initialFireCount)); + items.add(new FireFighter(initialFirefighterCount)); Fboard b=new Fboard(columnCount,rowCount,items); + b.initializeElements(); this.setModel(b); repaintGrid(); } diff --git a/src/main/java/newmodel/Extinguisher.java b/src/main/java/newmodel/Extinguisher.java index ec4eccd21817470d2a845e0cbf7839645aea5ef6..632aaadaf3852b0cd56f8b86f0d4fff0c98c6994 100644 --- a/src/main/java/newmodel/Extinguisher.java +++ b/src/main/java/newmodel/Extinguisher.java @@ -5,12 +5,11 @@ import util.Position; import java.util.List; public abstract class Extinguisher implements item { - final int ID=1; - public abstract List<Position> update(); - public abstract void extinguish(Position position); - public abstract void setState(); + public abstract List<Position> update(Fboard board); + public abstract void extinguish(Position position,Fboard board); + public abstract ModelElement getState(); public abstract void initialize(); diff --git a/src/main/java/newmodel/Fboard.java b/src/main/java/newmodel/Fboard.java index 39b43df5dd2ef0a13eccce72710f663a303c380b..e62afa5372a93cd3cdaab205eca9f0c8da7441b1 100644 --- a/src/main/java/newmodel/Fboard.java +++ b/src/main/java/newmodel/Fboard.java @@ -11,7 +11,7 @@ public class Fboard { protected static int rowCount; private int step = 0; - private List<item> items; + private final List<item> items; public Fboard(int columnCount, int rowCount,List<item> item) { this.items=item; @@ -32,12 +32,12 @@ public class Fboard { List<Position> result = new ArrayList<>(); for(item item : items){ if(item.getID()==1){ - result.addAll(item.update()); + result.addAll(item.update(this)); } } for(item item : items){ if(item.getID()==0 && step % 2 ==0){ - result.addAll(item.update()); + result.addAll(item.update(this)); } } step++; @@ -63,27 +63,18 @@ public class Fboard { } } } - public int getStep(){ - return step; - } - public int getColumnCount(){ - return this.columnCount; - } - - public int getRowCount(){ - return this.rowCount; - } public Fire getFire() { Fire x = null; for (item e : items) { - if(e.getID()==0){ + if (e.getID() == 0) { x = (Fire) e; + break; } } return x; } - public static List<Position> neighbors(Position position) { + public 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)); @@ -92,10 +83,10 @@ public class Fboard { return list; } - public static Position neighborClosestToFire(Position position) { + public Position neighborClosestToFire(Position position) { Set<Position> seen = new HashSet<>(); HashMap<Position, Position> firstMove = new HashMap<>(); - Queue<Position> toVisit = new LinkedList<>(neighbors(position)); //Queue is initialised with the neighbors of position + Queue<Position> toVisit = new LinkedList<>(this.neighbors(position)); //Queue is initialised with the neighbors of position for (Position initialMove : toVisit) firstMove.put(initialMove, initialMove); while (!toVisit.isEmpty()) { @@ -114,13 +105,13 @@ public class Fboard { public List<ModelElement> getState(Position position){ List<ModelElement> result = new ArrayList<>(); - for (item e :items){ - if (e.getPositions().equals(position) && e.getID()==1){ - result.add(e.getState()); + for (item e :items) { + if (e.getPositions().contains(position) && e.getID() == 1) { + result.add(e.getState());break; } + if (e.getPositions().contains(position) && e.getID() == 0) + result.add(getFire().getState());break; } - if(getFire().containsFire(position)) - result.add(getFire().getState()); return result; } diff --git a/src/main/java/newmodel/Fire.java b/src/main/java/newmodel/Fire.java index 9bcd911ff51283f9214c6cf72a86613e73e26593..f3b64ee6a8b254087569aa9354a0b6725cdd75b3 100644 --- a/src/main/java/newmodel/Fire.java +++ b/src/main/java/newmodel/Fire.java @@ -5,36 +5,34 @@ import util.Position; import java.util.*; -public class Fire implements item{ +public class Fire implements item { private final int initialFireCount; private List<Position> firePositions; - private ModelElement state; + private final ModelElement state; private final Random randomGenerator = new Random(); private final int ID=0; public Fire(int initialFireCount) { - this.initialFireCount = initialFireCount;this.state=ModelElement.FIRE; + this.initialFireCount = initialFireCount; + this.state=ModelElement.FIRE; } - public List<Position> update() { - List<Position> result = new ArrayList<>(); + public List<Position> update(Fboard board) { List<Position> newFirePositions = new ArrayList<>(); for (Position fire : firePositions) { - newFirePositions.addAll(Fboard.neighbors(fire)); + newFirePositions.addAll(board.neighbors(fire)); } firePositions.addAll(newFirePositions); - result.addAll(newFirePositions); - - return result; + return newFirePositions; } public ModelElement getState() { - return state; + return this.state; } public int getID() { @@ -61,11 +59,4 @@ public class Fire implements item{ } - public boolean containsFire(Position position) { - if (firePositions.contains(position)) { - return true; - } - else return false; - } - } diff --git a/src/main/java/newmodel/FireFighter.java b/src/main/java/newmodel/FireFighter.java index 66bf4b3825e50634ae261dacb5db35681947bf57..9dc5cb5934732b5b0f7a0dede8ab39c8ab2c2b99 100644 --- a/src/main/java/newmodel/FireFighter.java +++ b/src/main/java/newmodel/FireFighter.java @@ -4,31 +4,36 @@ import util.Position; import java.util.ArrayList; import java.util.List; import java.util.Random; +import model.ModelElement; public class FireFighter extends Extinguisher { - private ModelElement state; + private final ModelElement state; private List<Position> firefighterPositions; private final Random randomGenerator = new Random(); private final int initialFirefighterCount; + + private int ID=1; public FireFighter(int initialFirefighterCount){ + this.initialFirefighterCount=initialFirefighterCount; + this.state=ModelElement.FIREFIGHTER; } - public List<Position> update() { + public List<Position> update(Fboard board) { List<Position> result = new ArrayList<>(); List<Position> firefighterNewPositions = new ArrayList<>(); for (Position firefighterPosition : firefighterPositions) { - Position newFirefighterPosition = Fboard.neighborClosestToFire(firefighterPosition); + Position newFirefighterPosition = board.neighborClosestToFire(firefighterPosition); firefighterNewPositions.add(newFirefighterPosition); - extinguish(newFirefighterPosition); + extinguish(newFirefighterPosition,board); result.add(firefighterPosition); result.add(newFirefighterPosition); - List<Position> neighborFirePositions = Fboard.neighbors(newFirefighterPosition).stream() + 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); + extinguish(firePosition,board); result.addAll(neighborFirePositions); } firefighterPositions = firefighterNewPositions; @@ -36,22 +41,18 @@ public class FireFighter extends Extinguisher { } - public void extinguish(Position position) { - this.board.getFire().extinguish(position); - } - - - public void setState() { - state= ModelElement.FIREFIGHTER; + public void extinguish(Position position,Fboard board) { + board.getFire().extinguish(position); } public ModelElement getState() { - return state; + return this.state; } - @Override + // implementi liha pattern visiteur public int getID() { + return this.ID; } diff --git a/src/main/java/newmodel/MotoFireFighter.java b/src/main/java/newmodel/MotoFireFighter.java deleted file mode 100644 index 099e1eeb3d46fc16e4001074b11e1eaeb91d9b42..0000000000000000000000000000000000000000 --- a/src/main/java/newmodel/MotoFireFighter.java +++ /dev/null @@ -1,43 +0,0 @@ -package newmodel; - -import model.ModelElement; -import util.Position; - -import java.util.List; - -public class MotoFireFighter extends Extinguisher { - @Override - public List<Position> update() { - return null; - } - - @Override - public void extinguish(Position position) { - - } - - @Override - public void setState() { - - } - - @Override - public ModelElement getState() { - return null; - } - - @Override - public int getID() { - return 0; - } - - @Override - public void initialize() { - - } - - @Override - public List<Position> getPositions() { - return null; - } -} diff --git a/src/main/java/newmodel/Nuages.java b/src/main/java/newmodel/Nuages.java deleted file mode 100644 index d3e3c6a30aa7db323a4858bfd406227f0ca2e397..0000000000000000000000000000000000000000 --- a/src/main/java/newmodel/Nuages.java +++ /dev/null @@ -1,74 +0,0 @@ -package newmodel; - -import model.ModelElement; -import util.Position; - -import java.util.ArrayList; -import java.util.List; -import java.util.Random; - -public class Nuages extends Extinguisher{ - private ModelElement state; - private final Fboard board; - private List<Position> nuagesPositions; - private final Random randomGenerator = new Random(); - - private final int initialNuagesCount; - - public Nuages(int initialNuagesCount,Fboard b){ - this.initialNuagesCount=initialNuagesCount; - this.board=b; - } - - public List<Position> update() { - List<Position> result = new ArrayList<>(); - List<Position> NuagesNewPositions = new ArrayList<>(); - for (Position NuageNewPosition: nuagesPositions) { - NuagesNewPositions.add(randomPosition()); - } - for(Position nuage : NuagesNewPositions) { - extinguish(nuage); - } - result.addAll(nuagesPositions); - result.addAll(NuagesNewPositions); - - nuagesPositions = NuagesNewPositions; - return result; - } - - - public void extinguish(Position position) { - this.board.getFire().extinguish(position); - } - - - public void setState() { - state=ModelElement.FIREFIGHTER; - } - - - public ModelElement getState() { - return state; - } - - @Override - public int getID() { - return 0; - } - - - public void initialize() { - nuagesPositions = new ArrayList<>(); - for (int index = 0; index < initialNuagesCount; index++) - nuagesPositions.add(randomPosition()); - } - - - - public List<Position> getPositions() { - return this.nuagesPositions; - } - private Position randomPosition() { - return new Position(randomGenerator.nextInt(board.rowCount), randomGenerator.nextInt(board.columnCount)); - } -} diff --git a/src/main/java/newmodel/Pompiers.java b/src/main/java/newmodel/Pompiers.java deleted file mode 100644 index 3664e487d6173d0eadf302cd916516722f39de3d..0000000000000000000000000000000000000000 --- a/src/main/java/newmodel/Pompiers.java +++ /dev/null @@ -1,63 +0,0 @@ -package newmodel; - -import model.ModelElement; -import util.Position; - -import java.util.List; -import java.util.Random; - - -public class Pompiers extends Extinguisher{ - private ModelElement state; - private final Fboard board; - private List<Position> Pompiers; - private final Random randomGenerator = new Random(); - - private final int initialPompiersCount; - - - public Pompiers(int count,Fboard b){ - this.board=b; - this.initialPompiersCount=count; - - } - - public List<Position> updateExtinguisher() { - return null; - } - - - @Override - public List<Position> update() { - return null; - } - - public void extinguish(Position position) { - - } - - - public void setState() { - this.state=ModelElement.FIREFIGHTER; - } - - - public ModelElement getState() { - return state; - } - - @Override - public int getID() { - return 0; - } - - - public void initialize() { - - } - - - public List<Position> getPositions() { - return Pompiers; - } -} diff --git a/src/main/java/newmodel/item.java b/src/main/java/newmodel/item.java index 11735f5298e070d2cf4cf179a88f2540b0db42eb..98b34f40b728eb60d604f286a54ee258d9ee4064 100644 --- a/src/main/java/newmodel/item.java +++ b/src/main/java/newmodel/item.java @@ -6,7 +6,7 @@ import util.Position; import java.util.List; public interface item { - public List<Position> update(); + public List<Position> update(Fboard board); public ModelElement getState(); public int getID(); diff --git a/src/main/java/view/FirefighterGrid.java b/src/main/java/view/FirefighterGrid.java index f48762c7f1b6b89132613bd726a8c719a101966f..3c4601256ef05698e6a0ca22b2c8528514712eb7 100644 --- a/src/main/java/view/FirefighterGrid.java +++ b/src/main/java/view/FirefighterGrid.java @@ -78,6 +78,8 @@ public class FirefighterGrid extends Canvas implements Grid<ViewElement>{ this.squareHeight = squareHeight; this.columnCount = columnCount; this.rowCount = rowCount; + super.setWidth(squareWidth*columnCount); + super.setHeight(squareHeight*rowCount); } private void paintLines(){ @@ -98,10 +100,10 @@ public class FirefighterGrid extends Canvas implements Grid<ViewElement>{ //this function color each case in the board with corresponding elments fire or firefighter private void paintSquare(int row, int column, Color color){ getGraphicsContext2D().setFill(color); - getGraphicsContext2D().fillRect(row*squareHeight,column*squareWidth,squareHeight,squareWidth); + getGraphicsContext2D().fillRect(column*squareHeight,row*squareWidth,squareHeight,squareWidth); } //this function clear the color in each case in the board passed in the arguments private void clearSquare(int row, int column){ - getGraphicsContext2D().clearRect(row*squareHeight,column*squareWidth,squareHeight,squareWidth); + getGraphicsContext2D().clearRect(column*squareHeight,row*squareWidth,squareHeight,squareWidth); } } \ No newline at end of file diff --git a/src/main/resources/view/view.fxml b/src/main/resources/view/view.fxml index 3f19ac9de44d6f0b571dc29e43bf15ff2ebeff79..336ffa315645baacbe25bf59171d2ff6d867b9c5 100644 --- a/src/main/resources/view/view.fxml +++ b/src/main/resources/view/view.fxml @@ -33,7 +33,7 @@ mnemonicParsing="false" onAction="#pauseToggleButtonAction" prefHeight="24.0" prefWidth="200.0" styleClass="button" text="Pause"/> </VBox> - <FirefighterGrid fx:id="grid" width="1000.0" height="1000.0" + <FirefighterGrid fx:id="grid" xmlns="http://javafx.com/javafx" xmlns:fx="http://javafx.com/fxml"> </FirefighterGrid>