diff --git a/gradlew b/gradlew old mode 100755 new mode 100644 diff --git a/src/main/java/app/SimulatorApplication.java b/src/main/java/app/SimulatorApplication.java index 86abb8525b4a41c5a54cea60981c01025d5ae3f8..a3b7996590737c56174cfc1539078b8028b19bbe 100644 --- a/src/main/java/app/SimulatorApplication.java +++ b/src/main/java/app/SimulatorApplication.java @@ -19,6 +19,7 @@ public class SimulatorApplication extends javafx.application.Application { private static final int BOX_HEIGHT = 25; public static final int INITIAL_FIRE_COUNT = 3; public static final int INITIAL_FIREFIGHTER_COUNT = 6; + public static final int INITIAL_CLOUD_COUNT = 6; private Stage primaryStage; private Parent view; @@ -44,7 +45,7 @@ public class SimulatorApplication extends javafx.application.Application { view = loader.load(); Controller controller = loader.getController(); controller.initialize(BOX_WIDTH, BOX_HEIGHT, COLUMN_COUNT, ROW_COUNT, - INITIAL_FIRE_COUNT, INITIAL_FIREFIGHTER_COUNT); + INITIAL_FIRE_COUNT, INITIAL_FIREFIGHTER_COUNT, INITIAL_CLOUD_COUNT); } private void showScene() { diff --git a/src/main/java/controller/Controller.java b/src/main/java/controller/Controller.java index 04dd45ff4d3470ecc1557ba9b9801c769d15415e..f694acf9bee37287cf1267ad3e3594dd740f0e61 100644 --- a/src/main/java/controller/Controller.java +++ b/src/main/java/controller/Controller.java @@ -5,6 +5,11 @@ import static java.util.Objects.*; import java.util.ArrayList; import java.util.List; +import static java.util.Objects.*; + +import java.util.ArrayList; +import java.util.List; + import javafx.animation.Animation; import javafx.animation.KeyFrame; import javafx.animation.Timeline; diff --git a/src/main/java/model/Board.java b/src/main/java/model/Board.java index b0e448c8012bfe706f1a8d8dcf8b642a1aec6955..6bd1867cfe8f8835727bd0655900e9ccf5a8711c 100644 --- a/src/main/java/model/Board.java +++ b/src/main/java/model/Board.java @@ -4,6 +4,8 @@ import java.util.List; import util.Position; +import util.Position; + /** * This interface represents a generic board for modeling various state-based * systems. diff --git a/src/main/java/model/EmptySquare.java b/src/main/java/model/EmptySquare.java new file mode 100644 index 0000000000000000000000000000000000000000..113ea0a394870345e6520690e083b03c9bb70a7c --- /dev/null +++ b/src/main/java/model/EmptySquare.java @@ -0,0 +1,49 @@ +package model; + +import java.util.ArrayList; +import java.util.List; + +import javafx.scene.paint.Color; +import util.Position; + +public class EmptySquare implements Entity{ + + private Position position; + private final Color viewColor = Color.WHITE; + private int age; + public EmptySquare(Position p){ + this.position = p; + this.age = -999; + } + public EmptySquare(Position p, int age){ + this.position = p; + this.age = age; + } + @Override + public List<Position> nextTurn(Board<Entity> board) { + return new ArrayList<Position>(); + } + + @Override + public Position getPosition() { + return position; + } + + @Override + public void setPosition(Position p) { + this.position = p; + } + + public Color getViewColor(){ + return this.viewColor; + } + @Override + public int getAge() { + return this.age; + } + + @Override + public void incrementAge() { + age = age + 1; + } +} diff --git a/src/main/java/model/Entity.java b/src/main/java/model/Entity.java index a14b34a525698fa52e5d472ccbc57764f78b9435..7cafb0e4c7c5af55e65f10603af93062a02d7257 100644 --- a/src/main/java/model/Entity.java +++ b/src/main/java/model/Entity.java @@ -5,6 +5,11 @@ import java.util.List; import javafx.scene.paint.Color; import util.Position; +import java.util.List; + +import javafx.scene.paint.Color; +import util.Position; + public interface Entity { /** * Exécute un tour de jeu, en vérifiant les cases adjacentes pour des instances de Fire. diff --git a/src/main/java/model/Fire.java b/src/main/java/model/Fire.java index 65c3fe456a66630864e209db25b2ed38d35ffe2c..083068f9c033b1d73ada69c05df4fd60dd8a22a9 100644 --- a/src/main/java/model/Fire.java +++ b/src/main/java/model/Fire.java @@ -6,6 +6,7 @@ import java.util.List; import javafx.scene.paint.Color; import util.Position; import util.PositionUtil; +import util.PositionUtil; public class Fire implements Entity { Board<Square> b; diff --git a/src/main/java/model/FireFighter.java b/src/main/java/model/FireFighter.java index 4e8a35e927eb440d3ce9d35ce327dfd741e206c5..cf7a6c52fd4a8bece2d2595a6af23b7c1ad6bb40 100644 --- a/src/main/java/model/FireFighter.java +++ b/src/main/java/model/FireFighter.java @@ -6,6 +6,7 @@ import java.util.List; import javafx.scene.paint.Color; import util.Position; import util.PositionUtil; +import util.PositionUtil; public class FireFighter implements Entity { private int age; diff --git a/src/main/java/model/FireFighterScenario.java b/src/main/java/model/FireFighterScenario.java index 7fc6ce9f81869777ef22099dc22f1ebff58b3c45..a23793e8e59d784505f1f3f7857b86aac5450fab 100644 --- a/src/main/java/model/FireFighterScenario.java +++ b/src/main/java/model/FireFighterScenario.java @@ -3,12 +3,16 @@ package model; import java.util.ArrayList; import java.util.Collections; import java.util.Iterator; +import java.util.Collections; +import java.util.Iterator; import java.util.List; import java.util.Random; +import java.util.Random; import util.Matrix; import util.Position; import util.PositionUtil; +import util.PositionUtil; public class FireFighterScenario extends EntityScenario implements Board<Square> { @@ -116,6 +120,9 @@ public class FireFighterScenario extends EntityScenario implements Board<Square> return matrix.getRows(); } + public int columnCount() { + return matrix.getColumns(); + public int columnCount() { return matrix.getColumns(); } diff --git a/src/main/java/model/Scenario.java b/src/main/java/model/Scenario.java index d491a6542975411890741666160ca88246e544ea..b7f97edde1a79e4a136bded306b605b1fc43e02e 100644 --- a/src/main/java/model/Scenario.java +++ b/src/main/java/model/Scenario.java @@ -3,5 +3,9 @@ package model; import util.Matrix; public interface Scenario { +<<<<<<< HEAD public void initScenario(Matrix<Square> matrix); +======= + public void initScenario(Matrix<Entity> matrix); +>>>>>>> d8a3bf456f5b3471a26e38f4c2d9f5ccef27b158 } diff --git a/src/main/java/model/cloud.java b/src/main/java/model/cloud.java new file mode 100644 index 0000000000000000000000000000000000000000..b11b9932d430732848f1c7bf298f8b8782812c63 --- /dev/null +++ b/src/main/java/model/cloud.java @@ -0,0 +1,94 @@ +package model; + +import javafx.scene.paint.Color; +import util.Position; +import util.PositionUtil; + +import java.util.ArrayList; +import java.util.List; +import java.util.Random; + +public class cloud implements Entity{ + private int age; + private final Color viewColor = Color.GREY; + private Position position; + Board<Entity> b; + + public cloud (Position position, Board<Entity> b, int age){ + this.age = age; + this.position = position; + this.b = b; + } + + + + @Override + public List<Position> nextTurn(Board<Entity> b) { + List<Position> positions = new ArrayList<>(); + + // Générer les positions adjacentes valides + List<Position> possibleMoves = PositionUtil.generateAllAdjacentPositions(position, b); + + // Sélectionner une position aléatoire parmi les mouvements possibles + Position next_pos = possibleMoves.get(new Random().nextInt(possibleMoves.size())); + + // Vérifier l'état de la nouvelle position + ArrayList<Entity> nextEntities = b.getState(next_pos); + + positions.add(position); + positions.add(next_pos); + + // Si la nouvelle position contient un feu, éteindre le feu + if (nextEntities.contains(Fire.class)) { + extinguish(List.of(next_pos), b); + } + + + b.setState(this, next_pos); + + + + // Retourner la position mise à jour pour affichage ou suivi + return positions; + } + + + + + private List<Position> extinguish(List<Position> next_pos, Board<Entity> b) { + List<Position> extinguishedPositions = new ArrayList<>(); + + if (b.getState(next_pos.get(0)).contains(Fire.class)) { + b.clearCase(next_pos.get(0)); + extinguishedPositions.add(next_pos.get(0)); + } + + + return extinguishedPositions; + } + + @Override + public Position getPosition() { + return position; + } + + @Override + public void setPosition(Position p) { + this.position = p; + } + + @Override + public int getAge() { + return this.age; + } + + @Override + public void incrementAge() { + this.age += 1; + } + + @Override + public Color getViewColor() { + return viewColor; + } +} diff --git a/src/main/java/module-info.java b/src/main/java/module-info.java index 4c36d97709b342e457203c75d081fc5cc1955c0f..1bd3e9a86156ea98b4650fee627b4411b90ff3fd 100644 --- a/src/main/java/module-info.java +++ b/src/main/java/module-info.java @@ -2,7 +2,8 @@ module firefighter { requires javafx.controls; requires javafx.fxml; requires javafx.graphics; - opens controller to javafx.fxml; + requires java.sql; + opens controller to javafx.fxml; exports app; opens app to javafx.fxml; } diff --git a/src/main/java/util/Matrix.java b/src/main/java/util/Matrix.java index 5bbccfa13e21061d30fd50baf111cacdff888d67..9fb77030ffe0228fcba57d442f8611bc6c8f42ad 100644 --- a/src/main/java/util/Matrix.java +++ b/src/main/java/util/Matrix.java @@ -1,5 +1,6 @@ package util; + import java.util.ArrayList; import java.util.Iterator; import java.util.NoSuchElementException;