Skip to content
Snippets Groups Projects
Commit b40b3c19 authored by ousseyn01's avatar ousseyn01
Browse files

Modification of Cloud because it not works correctly

We change methods and implements other methods
parent cb4d18d9
No related branches found
No related tags found
No related merge requests found
...@@ -3,7 +3,6 @@ package model; ...@@ -3,7 +3,6 @@ package model;
import util.Position; import util.Position;
import java.util.*; import java.util.*;
import java.util.Map;
public class Cloud { public class Cloud {
private Position position; private Position position;
...@@ -15,32 +14,32 @@ public class Cloud { ...@@ -15,32 +14,32 @@ public class Cloud {
this.neighbors = neighbors; this.neighbors = neighbors;
} }
public void moveAndExtinguishFire(Fire fire) { // Déplacement du nuage d'une case aléatoire parmi ses voisins
Position newPosition = moveToNewPosition(); public void move(Fire fire, Set<Position> mountains) {
this.position = newPosition; List<Position> validNeighbors = neighbors.get(position).stream()
.filter(neighbor -> !mountains.contains(neighbor)) // Exclure les montagnes
.toList();
extinguishNeighboringFires(fire); if (!validNeighbors.isEmpty()) {
this.position = validNeighbors.get(randomGenerator.nextInt(validNeighbors.size()));
} }
private Position moveToNewPosition() { // Éteindre les feux après déplacement
List<Position> neighborsList = neighbors.get(position); extinguishFires(fire);
return neighborsList.get((int) (Math.random() * neighborsList.size()));
} }
private void extinguishNeighboringFires(Fire fire) { // Éteint les feux sur la position du nuage et ses voisins
List<Position> neighboringPositions = neighbors.get(position); private void extinguishFires(Fire fire) {
for (Position neighbor : neighboringPositions) { // Éteindre le feu à la position actuelle
if (fire.getFirePositions().contains(neighbor)) { fire.extinguishFire(position);
// Éteindre les feux voisins
for (Position neighbor : neighbors.get(position)) {
fire.extinguishFire(neighbor); fire.extinguishFire(neighbor);
} }
} }
}
public Position getPosition() { public Position getPosition() {
return position; return position;
} }
public void extinguishFireCloud(Fire fire) {
fire.getFirePositions().remove(position);
}
} }
...@@ -125,8 +125,9 @@ public class FirefighterBoard implements Board<List<ModelElement>> { ...@@ -125,8 +125,9 @@ public class FirefighterBoard implements Board<List<ModelElement>> {
} }
// Déplacer les nuages et éteindre les feux // Déplacer les nuages et éteindre les feux
for (Cloud cloud : clouds) { for (Cloud cloud : clouds) {
cloud.moveAndExtinguishFire(fire); //cloud.moveAndExtinguishFire(fire);
cloud.extinguishFireCloud(fire); //cloud.extinguishFireCloud(fire);
cloud.move(fire, getMountainPositions());
} }
step++; step++;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment