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

For Route and Rocaille

parent 7543f733
No related branches found
No related tags found
No related merge requests found
Pipeline #41916 failed
...@@ -94,6 +94,12 @@ public class Controller { ...@@ -94,6 +94,12 @@ public class Controller {
if(squareState.contains(ModelElement.MOUNTAIN)){ if(squareState.contains(ModelElement.MOUNTAIN)){
return ViewElement.MOUNTAIN; return ViewElement.MOUNTAIN;
} }
if(squareState.contains(ModelElement.ROUTE)){
return ViewElement.ROUTE;
}
if(squareState.contains(ModelElement.ROCAILLE)){
return ViewElement.ROCAILLE;
}
return ViewElement.EMPTY; return ViewElement.EMPTY;
} }
......
...@@ -23,6 +23,8 @@ public class FirefighterBoard implements Board<List<ModelElement>> { ...@@ -23,6 +23,8 @@ public class FirefighterBoard implements Board<List<ModelElement>> {
private final Random randomGenerator = new Random(); private final Random randomGenerator = new Random();
private NextGenerationUpdater nextGenerationUpdater; private NextGenerationUpdater nextGenerationUpdater;
private List<TerrainElement> terrainElements;
public FirefighterBoard(int columnCount, int rowCount, int initialFireCount, int initialFirefighterCount, int initialCloudCount, int initialMountainCount) { public FirefighterBoard(int columnCount, int rowCount, int initialFireCount, int initialFirefighterCount, int initialCloudCount, int initialMountainCount) {
...@@ -48,6 +50,17 @@ public class FirefighterBoard implements Board<List<ModelElement>> { ...@@ -48,6 +50,17 @@ public class FirefighterBoard implements Board<List<ModelElement>> {
// Initialisation des Updaters // Initialisation des Updaters
nextGenerationUpdater = new NextGenerationUpdater(fire, clouds, firefighters, mountains, neighbors); nextGenerationUpdater = new NextGenerationUpdater(fire, clouds, firefighters, mountains, neighbors);
terrainElements = new ArrayList<>();
for (int i = 0; i < 5; i++) {
Position position = randomPosition();
terrainElements.add(new Route(position));
}
for (int i = 0; i < 5; i++) {
Position position = randomPosition();
terrainElements.add(new Rocaille(position));
}
} }
public void initializeElements() { public void initializeElements() {
...@@ -55,6 +68,8 @@ public class FirefighterBoard implements Board<List<ModelElement>> { ...@@ -55,6 +68,8 @@ public class FirefighterBoard implements Board<List<ModelElement>> {
clouds = new ArrayList<>(); clouds = new ArrayList<>();
mountains = new ArrayList<>(); mountains = new ArrayList<>();
Set<Position> firePositions = new HashSet<>(); Set<Position> firePositions = new HashSet<>();
for (int index = 0; index < initialCloudCount; index++) { for (int index = 0; index < initialCloudCount; index++) {
clouds.add(new Cloud(randomPosition(), neighbors)); clouds.add(new Cloud(randomPosition(), neighbors));
} }
...@@ -112,6 +127,16 @@ public class FirefighterBoard implements Board<List<ModelElement>> { ...@@ -112,6 +127,16 @@ public class FirefighterBoard implements Board<List<ModelElement>> {
if (fire.getFirePositions().contains(position)) if (fire.getFirePositions().contains(position))
result.add(ModelElement.FIRE); result.add(ModelElement.FIRE);
for (TerrainElement element : terrainElements) {
if (element.getPosition().equals(position)) {
if (element instanceof Route) {
result.add(ModelElement.ROUTE);
} else if (element instanceof Rocaille) {
result.add(ModelElement.ROCAILLE);
}
}
}
return result; return result;
} }
...@@ -151,6 +176,8 @@ public class FirefighterBoard implements Board<List<ModelElement>> { ...@@ -151,6 +176,8 @@ public class FirefighterBoard implements Board<List<ModelElement>> {
case FIREFIGHTER -> firefighters.add(new Firefighter(position)); case FIREFIGHTER -> firefighters.add(new Firefighter(position));
case CLOUD -> clouds.add(new Cloud(position, neighbors)); case CLOUD -> clouds.add(new Cloud(position, neighbors));
case MOUNTAIN -> mountains.add(new Mountain(position)); case MOUNTAIN -> mountains.add(new Mountain(position));
case ROUTE -> terrainElements.add(new Route(position));
case ROCAILLE -> terrainElements.add(new Rocaille(position));
} }
} }
} }
......
package model; package model;
public enum ModelElement { public enum ModelElement {
FIREFIGHTER, FIRE, CLOUD, MOUNTAIN FIREFIGHTER, FIRE, CLOUD, MOUNTAIN, ROUTE, ROCAILLE
} }
...@@ -2,7 +2,6 @@ package model; ...@@ -2,7 +2,6 @@ package model;
import util.Position; import util.Position;
import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Set; import java.util.Set;
import java.util.stream.Collectors; import java.util.stream.Collectors;
......
package model.update; package model.update;
import model.Cloud; import model.*;
import model.Fire;
import model.Firefighter;
import model.Mountain;
import util.Position; import util.Position;
import java.util.List; import java.util.List;
...@@ -17,7 +14,8 @@ public class NextGenerationUpdater { ...@@ -17,7 +14,8 @@ public class NextGenerationUpdater {
private final Map<Position, List<Position>> neighbors; private final Map<Position, List<Position>> neighbors;
private int step; private int step;
public NextGenerationUpdater(Fire fire, List<Cloud> clouds, List<Firefighter> firefighters, List<Mountain> mountains, Map<Position, List<Position>> neighbors) { public NextGenerationUpdater(Fire fire, List<Cloud> clouds, List<Firefighter> firefighters, List<Mountain> mountains,
Map<Position, List<Position>> neighbors) {
this.fire = fire; this.fire = fire;
this.clouds = clouds; this.clouds = clouds;
this.firefighters = firefighters; this.firefighters = firefighters;
...@@ -34,6 +32,7 @@ public class NextGenerationUpdater { ...@@ -34,6 +32,7 @@ public class NextGenerationUpdater {
modifiedPositions.addAll(fire.spreadFire(Mountain.getMountainPositions(mountains))); modifiedPositions.addAll(fire.spreadFire(Mountain.getMountainPositions(mountains)));
} }
// Gestion des nuages
for (Cloud cloud : clouds) { for (Cloud cloud : clouds) {
cloud.move(); cloud.move();
cloud.protectFromFire(fire); cloud.protectFromFire(fire);
......
...@@ -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 {
FIREFIGHTER(Color.BLUE), FIRE(Color.RED), CLOUD(Color.LIGHTGREY),MOUNTAIN(Color.CHOCOLATE), EMPTY(Color.WHITE); FIREFIGHTER(Color.BLUE), FIRE(Color.RED), CLOUD(Color.LIGHTGREY),MOUNTAIN(Color.CHOCOLATE),ROUTE(Color.BLACK), ROCAILLE(Color.MAROON), EMPTY(Color.WHITE);
final Color color; final Color color;
ViewElement(Color color) { ViewElement(Color color) {
this.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