Skip to content
Snippets Groups Projects
Commit 647682cc authored by CHAHINE Rami's avatar CHAHINE Rami
Browse files

fixed road and claud

parent 691b427d
Branches
No related tags found
No related merge requests found
Pipeline #41303 failed
Showing
with 50 additions and 14 deletions
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
...@@ -20,6 +20,7 @@ public class SimulatorApplication extends javafx.application.Application { ...@@ -20,6 +20,7 @@ public class SimulatorApplication extends javafx.application.Application {
public static final int INITIAL_FIRE_COUNT = 5; public static final int INITIAL_FIRE_COUNT = 5;
public static final int INITIAL_FIREFIGHTER_COUNT = 4; public static final int INITIAL_FIREFIGHTER_COUNT = 4;
public static final int INITIAL_ROAD_COUNT = 10; public static final int INITIAL_ROAD_COUNT = 10;
public static final int INITIAL_CLAUD_COUNT = 3;
private Stage primaryStage; private Stage primaryStage;
private Parent view; private Parent view;
...@@ -47,7 +48,7 @@ public class SimulatorApplication extends javafx.application.Application { ...@@ -47,7 +48,7 @@ public class SimulatorApplication extends javafx.application.Application {
Controller controller = loader.getController(); Controller controller = loader.getController();
controller.initialize(BOX_WIDTH, BOX_HEIGHT, COLUMN_COUNT, ROW_COUNT, controller.initialize(BOX_WIDTH, BOX_HEIGHT, COLUMN_COUNT, ROW_COUNT,
INITIAL_FIRE_COUNT, INITIAL_FIREFIGHTER_COUNT, INITIAL_ROAD_COUNT); INITIAL_FIRE_COUNT, INITIAL_FIREFIGHTER_COUNT, INITIAL_ROAD_COUNT,INITIAL_CLAUD_COUNT);
} }
private void showScene() { private void showScene() {
......
...@@ -33,9 +33,9 @@ public class Controller { ...@@ -33,9 +33,9 @@ public class Controller {
@FXML @FXML
private FirefighterGrid grid; private FirefighterGrid grid;
public void initialize(int boxWidth, int boxHeight, int columns, int rows, int fireCount, int firefighterCount, int initialRoadCount) { public void initialize(int boxWidth, int boxHeight, int columns, int rows, int fireCount, int firefighterCount, int initialRoadCount,int initialclaudCount) {
// Initialize the simulation board and connect it to the grid // Initialize the simulation board and connect it to the grid
board = new FirefighterBoard(columns, rows, fireCount, firefighterCount, initialRoadCount); board = new FirefighterBoard(columns, rows, fireCount, firefighterCount, initialRoadCount,initialclaudCount);
grid.initialize(columns, rows, boxWidth, boxHeight, board); grid.initialize(columns, rows, boxWidth, boxHeight, board);
// Initialize timeline for automatic progression // Initialize timeline for automatic progression
......
...@@ -11,9 +11,12 @@ public class FirefighterBoard implements Board<List<ModelElement>> { ...@@ -11,9 +11,12 @@ public class FirefighterBoard implements Board<List<ModelElement>> {
private final int rowCount; private final int rowCount;
private final int initialFireCount; private final int initialFireCount;
private final int initialFirefighterCount; private final int initialFirefighterCount;
private final int initialRoadCount;
private final int initialcloudCount;
private List<Position> firefighterPositions; private List<Position> firefighterPositions;
private Set<Position> firePositions; private Set<Position> firePositions;
private Set<Position> roadPositions;
private final Map<Position, List<Position>> neighbors; private final Map<Position, List<Position>> neighbors;
private final Position[][] positions; private final Position[][] positions;
private List<Position> cloudPositions; private List<Position> cloudPositions;
...@@ -21,17 +24,20 @@ public class FirefighterBoard implements Board<List<ModelElement>> { ...@@ -21,17 +24,20 @@ public class FirefighterBoard implements Board<List<ModelElement>> {
private int step = 0; private int step = 0;
// Constructor for FirefighterBoard // Constructor for FirefighterBoard
public FirefighterBoard(int columnCount, int rowCount, int initialFireCount, int initialFirefighterCount) { public FirefighterBoard(int columnCount, int rowCount, int initialFireCount, int initialFirefighterCount, int initialRoadCount, int initialcloudCount) {
this.columnCount = columnCount; this.columnCount = columnCount;
this.rowCount = rowCount; this.rowCount = rowCount;
this.initialFireCount = initialFireCount; this.initialFireCount = initialFireCount;
this.initialFirefighterCount = initialFirefighterCount; this.initialFirefighterCount = initialFirefighterCount;
this.initialRoadCount = initialRoadCount;
this.initialcloudCount = initialcloudCount;
this.positions = new Position[rowCount][columnCount]; this.positions = new Position[rowCount][columnCount];
this.firefighterPositions = new ArrayList<>(); this.firefighterPositions = new ArrayList<>();
this.firePositions = new HashSet<>(); this.firePositions = new HashSet<>();
this.neighbors = new HashMap<>(); this.neighbors = new HashMap<>();
this.cloudPositions = new ArrayList<>(); this.cloudPositions = new ArrayList<>();
this.roadPositions = new HashSet<>();
initializeBoard(); initializeBoard();
} }
...@@ -48,6 +54,15 @@ public class FirefighterBoard implements Board<List<ModelElement>> { ...@@ -48,6 +54,15 @@ public class FirefighterBoard implements Board<List<ModelElement>> {
for (int i = 0; i < initialFirefighterCount; i++) { for (int i = 0; i < initialFirefighterCount; i++) {
firefighterPositions.add(new Position(random.nextInt(rowCount), random.nextInt(columnCount))); firefighterPositions.add(new Position(random.nextInt(rowCount), random.nextInt(columnCount)));
} }
// Initialize road positions
for (int i = 0; i < initialRoadCount; i++) {
roadPositions.add(new Position(random.nextInt(rowCount), random.nextInt(columnCount)));
}
// Initialize road positions
for (int i = 0; i < initialcloudCount; i++) {
cloudPositions.add(new Position(random.nextInt(rowCount), random.nextInt(columnCount)));
}
// Initialize neighbors map // Initialize neighbors map
for (int row = 0; row < rowCount; row++) { for (int row = 0; row < rowCount; row++) {
...@@ -87,6 +102,11 @@ public class FirefighterBoard implements Board<List<ModelElement>> { ...@@ -87,6 +102,11 @@ public class FirefighterBoard implements Board<List<ModelElement>> {
result.add(ModelElement.CLOUD); result.add(ModelElement.CLOUD);
} }
} }
case ROAD -> {
if (roadPositions.contains(position)) {
result.add(ModelElement.ROAD);
}
}
default ->{ default ->{
} }
} }
...@@ -112,10 +132,11 @@ public class FirefighterBoard implements Board<List<ModelElement>> { ...@@ -112,10 +132,11 @@ public class FirefighterBoard implements Board<List<ModelElement>> {
@Override @Override
public void reset() { public void reset() {
step = 0; step = 0;
Initializer initializer = new Initializer(columnCount,rowCount,initialFireCount,initialFirefighterCount); Initializer initializer = new Initializer(columnCount,rowCount,initialFireCount,initialFirefighterCount, initialRoadCount,initialcloudCount);
resetPos(firePositions,initializer.getFirePositions()); resetPos(firePositions,initializer.getFirePositions());
resetPos(firefighterPositions,initializer.getFirefighterPositions()); resetPos(firefighterPositions,initializer.getFirefighterPositions());
resetPos(cloudPositions,initializer.getCloudPositions()); resetPos(cloudPositions,initializer.getCloudPositions());
resetPos(roadPositions,initializer.getRoadPositions());
neighbors.clear(); neighbors.clear();
neighbors.putAll(initializer.getNeighbors()); neighbors.putAll(initializer.getNeighbors());
...@@ -204,6 +225,13 @@ public class FirefighterBoard implements Board<List<ModelElement>> { ...@@ -204,6 +225,13 @@ public class FirefighterBoard implements Board<List<ModelElement>> {
for (Position cloudPosition : cloudPositions) { for (Position cloudPosition : cloudPositions) {
updatedElements.add(new Pair<>(cloudPosition, ModelElement.CLOUD)); updatedElements.add(new Pair<>(cloudPosition, ModelElement.CLOUD));
} }
// Add firefighter positions
for (Position cloudPosition : cloudPositions) {
updatedElements.add(new Pair<>(cloudPosition, ModelElement.CLOUD));
}
for (Position roadPosition : roadPositions) {
updatedElements.add(new Pair<>(roadPosition, ModelElement.ROAD));
}
return updatedElements; return updatedElements;
} }
......
...@@ -10,6 +10,7 @@ public class Initializer { ...@@ -10,6 +10,7 @@ public class Initializer {
private final int initialFireCount; private final int initialFireCount;
private final int initialFirefighterCount; private final int initialFirefighterCount;
private final int initialRoadCount; private final int initialRoadCount;
private final int initialcloudCount;
private final Position[][] positions; private final Position[][] positions;
private final Map<Position, List<Position>> neighbors; private final Map<Position, List<Position>> neighbors;
...@@ -24,12 +25,13 @@ public class Initializer { ...@@ -24,12 +25,13 @@ public class Initializer {
private static final int cloudCount = 3; private static final int cloudCount = 3;
public Initializer(int columnCount, int rowCount, int initialFireCount, int initialFirefighterCount, int initialRoadCount) { public Initializer(int columnCount, int rowCount, int initialFireCount, int initialFirefighterCount, int initialRoadCount,int initialcloudCount) {
this.columnCount = columnCount; this.columnCount = columnCount;
this.rowCount = rowCount; this.rowCount = rowCount;
this.initialFireCount = initialFireCount; this.initialFireCount = initialFireCount;
this.initialFirefighterCount = initialFirefighterCount; this.initialFirefighterCount = initialFirefighterCount;
this.initialRoadCount = initialRoadCount; this.initialRoadCount = initialRoadCount;
this.initialcloudCount = initialcloudCount;
this.positions = new Position[rowCount][columnCount]; this.positions = new Position[rowCount][columnCount];
this.neighbors = new HashMap<>(); this.neighbors = new HashMap<>();
...@@ -62,6 +64,7 @@ public class Initializer { ...@@ -62,6 +64,7 @@ public class Initializer {
initializeFirePositions(); initializeFirePositions();
initializeFirefighters(); initializeFirefighters();
initializeRoadPositions(); initializeRoadPositions();
initializeCloudsPositions();
} }
private void initializeFirePositions() { private void initializeFirePositions() {
...@@ -70,11 +73,13 @@ public class Initializer { ...@@ -70,11 +73,13 @@ public class Initializer {
private void initializeFirefighters() { private void initializeFirefighters() {
addRandomPositions(firefighterPositions, initialFirefighterCount); addRandomPositions(firefighterPositions, initialFirefighterCount);
} }
private void initializeRoadPositions() {addRandomPositions(RoadPositions, initialRoadCount);} private void initializeRoadPositions() {
addRandomPositions(RoadPositions, initialRoadCount);}
private void initializeCloudsPositions() { private void initializeCloudsPositions() {
addRandomPositions(cloudPositions, cloudCount); addRandomPositions(cloudPositions, cloudCount);
} }
private void addRandomPositions(Collection<Position> targetCollection, int count) { private void addRandomPositions(Collection<Position> targetCollection, int count) {
while (targetCollection.size() < count) { while (targetCollection.size() < count) {
Position randomPosition = randomPosition(); Position randomPosition = randomPosition();
...@@ -121,6 +126,9 @@ public class Initializer { ...@@ -121,6 +126,9 @@ public class Initializer {
public Set<Position> getFirePositions() { public Set<Position> getFirePositions() {
return firePositions; return firePositions;
} }
public List<Position> getRoadPositions() {
return RoadPositions;
}
public List<Position> getCloudPositions() {return cloudPositions;} public List<Position> getCloudPositions() {return cloudPositions;}
public int getStep() {return step;} public int getStep() {return step;}
......
...@@ -2,7 +2,7 @@ package model; ...@@ -2,7 +2,7 @@ package model;
public enum ModelElement { public enum ModelElement {
FIREFIGHTER("blue"), FIRE("red"), CLOUD("darkgrey"); FIREFIGHTER("blue"), FIRE("red"), CLOUD("darkgrey"),ROAD("grey"),EMPTY("white");
private final String color; private final String color;
......
...@@ -44,8 +44,7 @@ public class FirefighterGrid extends Canvas { ...@@ -44,8 +44,7 @@ public class FirefighterGrid extends Canvas {
}else if (element == ModelElement.FIREFIGHTER) { }else if (element == ModelElement.FIREFIGHTER) {
gc.setFill(Color.BLUE); // Firefighter is blue gc.setFill(Color.BLUE); // Firefighter is blue
}else if (element== ModelElement.ROAD){ }else if (element== ModelElement.ROAD){
gc.setFill(Color.GRAY); gc.setFill(Color.WHITE);
}else {
}else if (element == ModelElement.CLOUD){ }else if (element == ModelElement.CLOUD){
gc.setFill(Color.YELLOW); gc.setFill(Color.YELLOW);
} else { } else {
......
...@@ -3,7 +3,7 @@ package view; ...@@ -3,7 +3,7 @@ package view;
import javafx.scene.paint.Color; import javafx.scene.paint.Color;
public enum ViewElement { public enum ViewElement {
ROAD(Color.GRAY), FIREFIGHTER(Color.BLUE), FIRE(Color.RED), EMPTY(Color.WHITE); ROAD(Color.GRAY), FIREFIGHTER(Color.BLUE), FIRE(Color.RED), EMPTY(Color.WHITE),CLAUD(Color.YELLOW);
final Color color; final Color color;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment