From dca5791377d2a7f9277ed3a3e936306477f01ed6 Mon Sep 17 00:00:00 2001
From: melizzzz <152108637+melizzzz@users.noreply.github.com>
Date: Tue, 19 Nov 2024 14:10:57 +0100
Subject: [PATCH] Cloud (petits soucis)

---
 src/main/java/app/SimulatorApplication.java |  4 ++--
 src/main/java/model/Cloud.java              | 13 +++++++++----
 src/main/java/model/Fire.java               |  2 +-
 3 files changed, 12 insertions(+), 7 deletions(-)

diff --git a/src/main/java/app/SimulatorApplication.java b/src/main/java/app/SimulatorApplication.java
index 7629eeb..d90b839 100644
--- a/src/main/java/app/SimulatorApplication.java
+++ b/src/main/java/app/SimulatorApplication.java
@@ -13,8 +13,8 @@ import javafx.stage.Stage;
 public class SimulatorApplication extends javafx.application.Application {
   private static final String VIEW_RESOURCE_PATH = "/view/view.fxml";
   private static final String APP_NAME = "Firefighter simulator";
-  private static final int ROW_COUNT = 20;
-  private static final int COLUMN_COUNT = 20;
+  private static final int ROW_COUNT = 22;
+  private static final int COLUMN_COUNT = 22;
   private static final int BOX_WIDTH = 25;
   private static final int BOX_HEIGHT = 25;
   public static final int INITIAL_FIRE_COUNT = 3;
diff --git a/src/main/java/model/Cloud.java b/src/main/java/model/Cloud.java
index d953e02..04d6a05 100644
--- a/src/main/java/model/Cloud.java
+++ b/src/main/java/model/Cloud.java
@@ -31,22 +31,27 @@ public class Cloud implements Entity{
     @Override
     public List<Position> nextTurn(Board<Square> b) {
         List<Position> adjacentPositions = PositionUtil.generateAdjacentPositions(position, b);
-        Position next_position = adjacentPositions.get(new Random().nextInt(adjacentPositions.size()));
 
+        // Filtrer pour obtenir uniquement les positions qui ne contiennent pas de pompier
+        adjacentPositions.removeIf(p -> b.doesSquareContainEntity(p, FireFighter.class));
 
+        // Choisir une position aléatoire parmi les mouvements possibles
+        Position next_position = adjacentPositions.get(new Random().nextInt(adjacentPositions.size()));
 
-        if (b.getStates(next_position).getEntities().stream().anyMatch(element -> element instanceof Fire)){
+        // Si la nouvelle position contient un feu, éteindre le feu
+        if (b.getStates(next_position).getEntities().stream().anyMatch(element -> element instanceof Fire) ){
             extinguish(next_position, b);
         }
+
         Position old_position = this.position;
         this.position = next_position;
-        b.addEntityAtSquare(this, position);
+        b.addEntityAtSquare(this, next_position);
         b.clearCaseFrom(this, old_position);
 
-
         return List.of(old_position, this.position);
     }
 
+
     private Position extinguish(Position p, Board<Square> b) {
         b.getStates(p).getEntities().removeIf(element -> element instanceof Fire);
             List<Entity> entities = b.getStates(p).getEntities();
diff --git a/src/main/java/model/Fire.java b/src/main/java/model/Fire.java
index 083068f..16b8726 100644
--- a/src/main/java/model/Fire.java
+++ b/src/main/java/model/Fire.java
@@ -32,7 +32,7 @@ public class Fire implements Entity {
             return new ArrayList<Position>();
         List<Position> positions = PositionUtil.generateAdjacentPositions(position, board);
         for (Position p : positions) {
-            if (b.getStates(p).isEmpty()) {
+            if (b.getStates(p).isEmpty() && !b.getStates(p).getEntities().contains(Cloud.class)) {
                 if (b.getStates(p).getMaxAge() < b.getStepNumber()
                         && PositionUtil.getManhattanDistance(position, p) == 1) {
                     board.addEntityAtSquare(new Fire(p, board), p);
-- 
GitLab