Skip to content
Snippets Groups Projects
Commit c221e819 authored by BELHACHEMI Mehdi's avatar BELHACHEMI Mehdi
Browse files

mehdi : changing updateFires

parent 65963e04
No related branches found
No related tags found
No related merge requests found
Pipeline #40328 passed
......@@ -20,6 +20,7 @@ public class SimulatorApplication extends javafx.application.Application {
public static final int INITIAL_FIRE_COUNT = 15;
public static final int INITIAL_FIREFIGHTER_COUNT = 10;
public static final int INITIAL_CLOUD_COUNT = 5;
public static final int INITIAL_ROAD_COUNT = 5;
private Stage primaryStage;
......@@ -46,7 +47,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_CLOUD_COUNT);
INITIAL_FIRE_COUNT, INITIAL_FIREFIGHTER_COUNT,INITIAL_CLOUD_COUNT,INITIAL_ROAD_COUNT);
}
private void showScene() {
......
......@@ -88,9 +88,12 @@ public class Controller {
if (squareState.contains(ModelElement.FIRE)) {
return ViewElement.FIRE;
}
if (squareState.contains(ModelElement.CLOUD)) { // Assurez-vous que le modèle inclut bien le nuage
if (squareState.contains(ModelElement.CLOUD)) {
return ViewElement.CLOUD;
}
if (squareState.contains(ModelElement.ROAD)) {
return ViewElement.ROAD;
}
return ViewElement.EMPTY;
}
......@@ -128,9 +131,9 @@ public class Controller {
}
public void initialize(int squareWidth, int squareHeight, int columnCount,
int rowCount, int initialFireCount, int initialFirefighterCount,int initialCloudCount) {
int rowCount, int initialFireCount, int initialFirefighterCount,int initialCloudCount,int initialRoadCount) {
grid.setDimensions(columnCount, rowCount, squareWidth, squareHeight);
this.setModel(new FirefighterBoard(columnCount, rowCount, initialFireCount, initialFirefighterCount,initialCloudCount));
this.setModel(new FirefighterBoard(columnCount, rowCount, initialFireCount, initialFirefighterCount,initialCloudCount,initialRoadCount));
repaintGrid();
}
......
......@@ -12,8 +12,10 @@ public class FirefighterBoard implements Board<List<ModelElement>> {
private final int initialFireCount;
private final int initialFirefighterCount;
private final int initialCloudCount;
private final int initialRoadCount;
private final TargetStrategy targetStrategy = new TargetStrategy();
private List<FireFighter> firefighters;
private List<Road> roads;
private Map<Position, Fire> fires = new HashMap<>();
private List<Cloud> clouds;
private final Map<Position, List<Position>> neighbors = new HashMap<>();
......@@ -21,7 +23,7 @@ public class FirefighterBoard implements Board<List<ModelElement>> {
private int step = 0;
private final Random randomGenerator = new Random();
public FirefighterBoard(int columnCount, int rowCount, int initialFireCount, int initialFirefighterCount,int initialCloudCount) {
public FirefighterBoard(int columnCount, int rowCount, int initialFireCount, int initialFirefighterCount,int initialCloudCount,int initialRoadCount) {
this.columnCount = columnCount;
this.rowCount = rowCount;
this.positions = new Position[rowCount][columnCount];
......@@ -31,6 +33,7 @@ public class FirefighterBoard implements Board<List<ModelElement>> {
this.initialFireCount = initialFireCount;
this.initialFirefighterCount = initialFirefighterCount;
this.initialCloudCount = initialCloudCount;
this.initialRoadCount = initialRoadCount;
initializeElements();
}
......@@ -61,6 +64,7 @@ public class FirefighterBoard implements Board<List<ModelElement>> {
firefighters = new ArrayList<>();
clouds = new ArrayList<>();
fires.clear();
roads = new ArrayList<>();
for (int index = 0; index < initialFireCount; index++) {
Position position = randomPosition();
......@@ -74,6 +78,10 @@ public class FirefighterBoard implements Board<List<ModelElement>> {
clouds.add(new Cloud(randomPosition()));
}
for (int index = 0; index < initialRoadCount; index++) {
roads.add(new Road(randomPosition()));
}
}
private Position randomPosition() {
......@@ -92,6 +100,9 @@ public class FirefighterBoard implements Board<List<ModelElement>> {
for (Cloud cloud : clouds) {
if (cloud.getPosition().equals(position)) result.add(ModelElement.CLOUD);
}
for (Road road : roads) {
if (road.getPosition().equals(position)) result.add(ModelElement.ROAD);
}
return result;
}
......@@ -139,6 +150,9 @@ public class FirefighterBoard implements Board<List<ModelElement>> {
if (step % 2 == 0) {
Set<Position> newFirePositions = new HashSet<>();
for (Position fire : new HashSet<>(fires.keySet())) {
List<Position> neighboursAvaiable = neighbors.get(fire);
newFirePositions.addAll(neighbors.get(fire));
}
for (Position position : newFirePositions) {
......@@ -196,11 +210,13 @@ public class FirefighterBoard implements Board<List<ModelElement>> {
public void setState(List<ModelElement> state, Position position) {
extinguish(position);
firefighters.removeIf(firefighter -> firefighter.getPosition().equals(position));
firefighters.removeIf(cloud -> cloud.getPosition().equals(position));
for (ModelElement element : state) {
switch (element) {
case FIRE -> fires.put(position, new Fire(position));
case FIREFIGHTER -> firefighters.add(new FireFighter(position));
case CLOUD -> clouds.add(new Cloud(position));
}
}
}
......
......@@ -3,6 +3,7 @@ package model;
public enum ModelElement {
FIREFIGHTER,
FIRE,
CLOUD;
CLOUD,
ROAD;
}
......@@ -19,4 +19,6 @@ public class Road {
}
......@@ -3,7 +3,7 @@ package view;
import javafx.scene.paint.Color;
public enum ViewElement {
FIREFIGHTER(Color.BLUE), FIRE(Color.RED),CLOUD(Color.LIGHTSKYBLUE), EMPTY(Color.WHITE);
FIREFIGHTER(Color.BLUE), FIRE(Color.RED),CLOUD(Color.LIGHTSKYBLUE),ROAD(Color.GRAY), EMPTY(Color.WHITE);
final Color color;
ViewElement(Color color) {
this.color = color;
......
......@@ -10,17 +10,17 @@ import static org.assertj.core.api.Assertions.*;
public class FirefighterBoardTest {
@Test
void testColumnCount(){
Board<List<ModelElement>> board = new FirefighterBoard(20, 10, 1, 3,1);
Board<List<ModelElement>> board = new FirefighterBoard(20, 10, 1, 3,1,5);
assertThat(board.columnCount()).isEqualTo(20);
}
@Test
void testRowCount(){
Board<List<ModelElement>> board = new FirefighterBoard(20, 10, 1, 3,1);
Board<List<ModelElement>> board = new FirefighterBoard(20, 10, 1, 3,1,5);
assertThat(board.rowCount()).isEqualTo(10);
}
@Test
void testStepNumber(){
Board<List<ModelElement>> board = new FirefighterBoard(20, 10, 1, 3,1);
Board<List<ModelElement>> board = new FirefighterBoard(20, 10, 1, 3,1,5);
for(int index = 0; index < 10; index++){
assertThat(board.stepNumber()).isEqualTo(index);
board.updateToNextGeneration();
......@@ -29,7 +29,7 @@ public class FirefighterBoardTest {
}
@Test
void testGetState_afterSet(){
Board<List<ModelElement>> board = new FirefighterBoard(20, 10, 0, 0,1);
Board<List<ModelElement>> board = new FirefighterBoard(20, 10, 0, 0,1,5);
Position position = new Position(1,2);
assertThat(board.getState(position)).isEmpty();
board.setState(List.of(ModelElement.FIRE), position);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment