Skip to content
Snippets Groups Projects
Commit fd03d021 authored by Sarah CHERCHEM's avatar Sarah CHERCHEM
Browse files

Create the class Road

parent d225e209
No related branches found
No related tags found
No related merge requests found
Showing
with 85 additions and 13 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
......@@ -97,6 +97,10 @@ public class Controller {
{
return ViewElement.MOUNTAIN;
}
if (element instanceof Road)
{
return ViewElement.ROAD;
}
}
return ViewElement.EMPTY;
......
......@@ -57,6 +57,7 @@ public class BoardFireFighterBehavior implements BoardBehavior{
motorizedFighters.add(motorizedFirefighter.getPosition());
}
generateMountainBlocks(rowCount, columnCount);
generateRoads(rowCount,columnCount);
}
......@@ -332,6 +333,47 @@ public class BoardFireFighterBehavior implements BoardBehavior{
return true; // La position est traversable
}
private void generateRoads(int rowCount, int columnCount) {
Random random = new Random();
int maxRoads = 3; // Par exemple, générer 3 routes
int roadLength = 5; // Longueur de chaque route (5 cases)
for (int i = 0; i < maxRoads; i++) {
int startRow = random.nextInt(rowCount); // L'index de départ de la route
int startCol = random.nextInt(columnCount);
// Créer une route uniquement si la position est valide
if (canPlaceRoad(startRow, startCol, roadLength,columnCount)) {
placeRoad(startRow, startCol, roadLength);
}
}
}
private boolean canPlaceRoad(int startRow, int startCol, int roadLength,int columnCount) {
// Vérifier si la ligne droite de la route peut être placée sans dépasser les bords
if (startCol + roadLength > columnCount) { // Vérifie si la route dépasse la largeur de la grille
return false;
}
// Vérifier que toutes les cases sont libres avant de placer la route
for (int i = 0; i < roadLength; i++) {
Position pos = new Position(startRow, startCol + i);
if (terrainMap.containsKey(pos)) {
return false; // Une case est déjà occupée
}
}
return true;
}
private void placeRoad(int startRow, int startCol, int roadLength) {
// Placer une route (ligne droite) sur la grille
for (int i = 0; i < roadLength; i++) {
Position pos = new Position(startRow, startCol + i);
terrainMap.put(pos, new Road(pos)); // Placer une route à chaque case
}
}
......
......@@ -69,6 +69,11 @@ public class FirefighterBoard implements Board<List<ModelElement>> {
result.add((Mountain) value); // Ajouter uniquement un objet Mountain
}
});
behavior.getTerrainMap().forEach((pos, value) -> {
if (pos.isAtPosition(position) && value instanceof Road) {
result.add((Road) value); // Ajouter uniquement un objet Mountain
}
});
return result;
}
......
......@@ -17,13 +17,13 @@ public class Mountain extends BoardElement implements Terrain {
public String toString() {
return null;
}
public static boolean isTraversableByFire() {
@Override
public boolean isTraversableByFire() {
return false; // Les montagnes ne sont pas franchissables par le feu
}
public static boolean isTraversableByFirefighter() {
@Override
public boolean isTraversableByFirefighter() {
return false; // Les pompiers ne peuvent pas passer non plus
}
}
package model;
public class Road {
import util.Position;
public class Road extends BoardElement implements Terrain{
public Road(Position position) {
super(position);
}
@Override
public String getType() {
return null;
}
@Override
public String toString() {
return null;
}
@Override
public boolean isTraversableByFire() {
return false;
}
@Override
public boolean isTraversableByFirefighter() {
return true;
}
}
......@@ -2,12 +2,7 @@ package model;
public interface Terrain {
static boolean isTraversableByFire() {
return false;
}
static boolean isTraversableByFirefighter() {
return false;
}
boolean isTraversableByFire();
boolean isTraversableByFirefighter();
}
......@@ -3,7 +3,8 @@ package view;
import javafx.scene.paint.Color;
public enum ViewElement {
FIREFIGHTER(Color.BLUE), FIRE(Color.RED), EMPTY(Color.WHITE) , CLOUD(Color.GRAY),MOTORIZED(Color.BLACK) , MOUNTAIN(Color.GREEN), ROCKY(Color.BLACK);
FIREFIGHTER(Color.BLUE), FIRE(Color.RED), EMPTY(Color.WHITE) , CLOUD(Color.GRAY),MOTORIZED(Color.BLACK) , MOUNTAIN(Color.GREEN), ROCKY(Color.BLACK),
ROAD(Color.BROWN);
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