diff --git a/src/main/java/app/SimulatorApplication.java b/src/main/java/app/SimulatorApplication.java index 241535ad21caa88d9dc9f06805b63b0593d3a18b..4121b6be45ff8815913f414f8a36c395282bfdb5 100644 --- a/src/main/java/app/SimulatorApplication.java +++ b/src/main/java/app/SimulatorApplication.java @@ -22,6 +22,7 @@ public class SimulatorApplication extends javafx.application.Application { public static final int INITIAL_CLOUD_COUNT = 15; public static final int INITIAL_MOTORIZEDFIREFIGHTER_COUNT = 2; public static final int INITIAL_MOUNTAIN_COUNT = 15; + public static final int INITIAL_ROAD_COUNT =5; private Stage primaryStage; private Parent view; @@ -47,7 +48,7 @@ public class SimulatorApplication extends javafx.application.Application { view = loader.load(); Controller controller = loader.getController(); controller.initialize(SQUARE_WIDTH, SQUARE_HEIGHT, COLUMN_COUNT, ROW_COUNT, - INITIAL_FIRE_COUNT, INITIAL_FIREFIGHTER_COUNT, INITIAL_CLOUD_COUNT,INITIAL_MOTORIZEDFIREFIGHTER_COUNT,INITIAL_MOUNTAIN_COUNT); + INITIAL_FIRE_COUNT, INITIAL_FIREFIGHTER_COUNT, INITIAL_CLOUD_COUNT,INITIAL_MOTORIZEDFIREFIGHTER_COUNT,INITIAL_MOUNTAIN_COUNT, INITIAL_ROAD_COUNT); } private void showScene() { diff --git a/src/main/java/controller/Controller.java b/src/main/java/controller/Controller.java index b5f3cde65a57cbee5305ac5b521a9d103828d9a3..34a41d03e653983dd5d537da75c6520b0386340a 100644 --- a/src/main/java/controller/Controller.java +++ b/src/main/java/controller/Controller.java @@ -112,9 +112,9 @@ public class Controller { } public void initialize(int squareWidth, int squareHeight, int columnCount, - int rowCount, int initialFireCount, int initialFirefighterCount,int initialCloudCount,int initialMotorizedFireFighterCount,int initialMountainCount) { + int rowCount, int initialFireCount, int initialFirefighterCount,int initialCloudCount,int initialMotorizedFireFighterCount,int initialMountainCount, int initialRoadCount) { grid.setDimensions(columnCount, rowCount, squareWidth, squareHeight); - board = new GameBoard(rowCount,columnCount,initialFireCount,initialFirefighterCount,initialCloudCount,initialMotorizedFireFighterCount,initialMountainCount); + board = new GameBoard(rowCount,columnCount,initialFireCount,initialFirefighterCount,initialCloudCount,initialMotorizedFireFighterCount ,initialMountainCount /*,initialRoadCount*/); board.initializeElements(); repaintGrid(); } diff --git a/src/main/java/model/Builder/GameManage.java b/src/main/java/model/Builder/GameManage.java index da84d515d4ddd1c00fd90cfe8b1dcf462f23d85a..e4b5e1cde87375bcab8f3d9a3d4621b1dc8322a0 100644 --- a/src/main/java/model/Builder/GameManage.java +++ b/src/main/java/model/Builder/GameManage.java @@ -6,6 +6,7 @@ import model.ExtinguishFire.FireFighter; import model.ExtinguishFire.MotorizedFireFighter; import model.Flammable.Fire; import model.Obstacle.Mountain; +import model.Obstacle.Road; public class GameManage { private final int fires; @@ -30,28 +31,34 @@ public class GameManage { Initialize(); } - public void Initialize(){ - for(int i=0;i<fires;i++) { + public void Initialize() { + for (int i = 0; i < fires; i++) { new Fire(Color.RED); } - for(int i=0;i<firefighters;i++) { + for (int i = 0; i < firefighters; i++) { new FireFighter(Color.BLUE); } - for(int i=0;i<clouds;i++) { + for (int i = 0; i < clouds; i++) { new Cloud(Color.LIGHTBLUE); } - for(int i=0;i<motorizedFireFighters;i++) { + for (int i = 0; i < motorizedFireFighters; i++) { new MotorizedFireFighter(Color.GREENYELLOW); } /*for(int i=0;i<rocailles;i++) { new Rocailles(Color.GREY); }*/ - for(int i=0;i<mountains;i++) { - new Mountain(Color.GREY); + + for (int i = 0; i < roads; i++) { + new Road(Color.DIMGREY); } - // TODO: 15/11/2023 la suite .... aussi l'initialisation va changer dans fire et firefighter - } -} + + for (int i = 0; i < mountains; i++) { + new Mountain(Color.GREY); + } + // TODO: 15/11/2023 la suite .... aussi l'initialisation va changer dans fire et firefighter + } + + } diff --git a/src/main/java/model/Obstacle/Road.java b/src/main/java/model/Obstacle/Road.java index 70a0adb708ca4b522d16564840512561ccc1c34a..c7f740e4bffca69b11f623052719e58471702a07 100644 --- a/src/main/java/model/Obstacle/Road.java +++ b/src/main/java/model/Obstacle/Road.java @@ -1,4 +1,56 @@ package model.Obstacle; -public class Road { +import javafx.scene.paint.Color; +import model.BoardElement; +import model.GameBoard; +import model.Visitor.Visitor; +import util.Position; + +import java.util.ArrayList; +import java.util.HashMap; + +import static model.GameBoard.elementPosition; + +/*public class Road { +}*/ +public class Road implements Obstacles{ + + private final Color color; + + public Road(Color color){ + this.color=color; + initialize(); + } + @Override + public Color getColor() { + return color; + } + + @Override + public Boolean accept(Visitor visitor) { + return visitor.visit(this); + } + + @Override + public void initialize() { + Position position = GameBoard.randomPosition(); + if (elementPosition.containsKey(position)) + elementPosition.get(position).add(this); + else { + ArrayList<BoardElement> boardElements = new ArrayList<>(); + boardElements.add(this); + elementPosition.put(position, boardElements); + } + } + + @Override + public void update(GameBoard gameBoard, Position position, HashMap<Position, ArrayList<BoardElement>> newElementPosition, ArrayList<Position> extinguishPosition) { + if(newElementPosition.containsKey(position)) + newElementPosition.get(position).add(this); + else{ + ArrayList<BoardElement> boardElements = new ArrayList<>(); + boardElements.add(this); + newElementPosition.put(position,boardElements); + } + } }