Skip to content
Snippets Groups Projects
Commit 61b24491 authored by AREZKI Celia's avatar AREZKI Celia
Browse files

modification of spreadfire methode to add a state for "rocky areas"...

modification of spreadfire methode to add a state for "rocky areas" (rocailles) and a counter for each cell
parent 2e6fc89a
No related branches found
No related tags found
No related merge requests found
Pipeline #40214 failed
......@@ -42,15 +42,30 @@ public class FireManager implements FireBehavior, FireProperties{
int rows = grid.length;
int columns = grid[0].length;
// Créez un tableau pour suivre les tours avant que le feu se propage sur les rocailles
int[][] fireCooldown = new int[rows][columns];
// Initialisation du tableau de cooldown des rocailles à 0
for (int i = 0; i < rows; i++) {
for (int j = 0; j < columns; j++) {
if (grid[i][j] == ViewElement.ROCKY) {
fireCooldown[i][j] = 4; // Le feu prend 4 tours pour se propager sur les rocailles
} else {
fireCooldown[i][j] = 0; // Aucune attente pour les autres cases
}
}
}
ViewElement[][] newGrid = new ViewElement[rows][columns];
for (int i = 0; i < rows; i++) {
System.arraycopy(grid[i], 0, newGrid[i], 0, columns);
}
// Propagation du feu
for (int i = 0; i < rows; i++) {
for (int j = 0; j < columns; j++) {
if (grid[i][j] == ViewElement.FIRE) {
// Tenter de propager le feu sur les voisins
// Propager le feu sur les voisins si possible
for (Position neighbor : getNeighbors(i, j, rows, columns)) {
if (grid[neighbor.row()][neighbor.column()] == ViewElement.EMPTY) {
newGrid[neighbor.row()][neighbor.column()] = ViewElement.FIRE;
......@@ -59,15 +74,30 @@ public class FireManager implements FireBehavior, FireProperties{
if (grid[neighbor.row()][neighbor.column()] == ViewElement.MOUNTAIN) {
newGrid[neighbor.row()][neighbor.column()] = ViewElement.MOUNTAIN;
}
// Propagation du feu sur les rocailles après 4 tours
if (grid[neighbor.row()][neighbor.column()] == ViewElement.ROCKY && fireCooldown[neighbor.row()][neighbor.column()] == 0) {
newGrid[neighbor.row()][neighbor.column()] = ViewElement.FIRE;
}
}
}
}
}
// Mise à jour de la grille
// Mise à jour de la grille après propagation
for (int i = 0; i < rows; i++) {
System.arraycopy(newGrid[i], 0, grid[i], 0, columns);
}
// Décrémenter le cooldown des rocailles chaque tour
for (int i = 0; i < rows; i++) {
for (int j = 0; j < columns; j++) {
if (fireCooldown[i][j] > 0) {
fireCooldown[i][j]--; // Décrémenter le compteur de cooldown
}
}
}
}
private List<Position> getNeighbors(int row, int column, int rows, int columns) {
List<Position> neighbors = new ArrayList<>();
......
......@@ -3,7 +3,7 @@ package view;
import javafx.scene.paint.Color;
public enum ViewElement {
FIREFIGHTER(Color.BLUE), FIRE(Color.RED), EMPTY(Color.WHITE) , CLOUD(Color.GRAY), MOUNTAIN(Color.GRAY);
FIREFIGHTER(Color.BLUE), FIRE(Color.RED), EMPTY(Color.WHITE) , CLOUD(Color.GRAY), MOUNTAIN(Color.GRAY), ROCKY(Color.GRAY);
final Color color;
ViewElement(Color color) {
this.color = color;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment