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