Skip to content
Snippets Groups Projects
Commit ba1ad89c authored by plojolo's avatar plojolo
Browse files

Ajout FireFighterPerson et FireTruck

parent 3d01aa5b
No related branches found
No related tags found
No related merge requests found
Pipeline #24865 failed
......@@ -20,6 +20,7 @@ public class SimulatorApplication extends javafx.application.Application {
public static final int INITIAL_FIRE_COUNT = 3;
public static final int INITIAL_FIREFIGHTER_COUNT = 6;
public static final int INITIAL_CLOUD_COUNT = 2;
public static final int INITIAL_FIRETRUCK_COUNT = 1;
private Stage primaryStage;
private Parent view;
......@@ -45,7 +46,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_FIRE_COUNT, INITIAL_FIREFIGHTER_COUNT, INITIAL_CLOUD_COUNT,INITIAL_FIRETRUCK_COUNT);
}
private void showScene() {
......
......@@ -91,6 +91,9 @@ public class Controller {
if (squareState.contains(ModelElement.CLOUD)){
return ViewElement.CLOUD;
}
if (squareState.contains(ModelElement.FIRETRUCK)){
return ViewElement.FIRETRUCK;
}
return ViewElement.EMPTY;
}
......@@ -127,9 +130,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 initialFireTruckCount) {
grid.setDimensions(columnCount, rowCount, squareWidth, squareHeight);
this.setModel(new FirefighterBoard(columnCount, rowCount, initialFireCount, initialFirefighterCount, initialCloudCount));
this.setModel(new FirefighterBoard(columnCount, rowCount, initialFireCount, initialFirefighterCount, initialCloudCount, initialFireTruckCount));
repaintGrid();
}
public void oneStepButtonAction() {
......
package model;
import util.Position;
import java.util.ArrayList;
import java.util.List;
public class FireFighterPerson extends AbstractFireFighters{
public FireFighterPerson(int columnCount, int rowCount, Fire fire) {
super(columnCount, rowCount, fire);
}
@Override
public void nextMove(){
List<Position> firefighterNewPositions = new ArrayList<>();
for (Position firefighterPosition : firefighterPositions) {
Position newFirefighterPosition = neighborClosestToFire(firefighterPosition);
firefighterNewPositions.add(newFirefighterPosition);
fire.extinguish(newFirefighterPosition);
}
firefighterPositions = firefighterNewPositions;
}
}
package model;
import util.Position;
import java.util.ArrayList;
import java.util.List;
public class FireTruck extends AbstractFireFighters{
public FireTruck(int columnCount, int rowCount, Fire fire) {
super(columnCount, rowCount, fire);
}
public void nextMove(){
List<Position> firefighterNewPositions = new ArrayList<>();
for (Position firefighterPosition : firefighterPositions) {
Position newFirefighterPosition = neighborClosestToFire(firefighterPosition);
newFirefighterPosition = neighborClosestToFire(newFirefighterPosition);
firefighterNewPositions.add(newFirefighterPosition);
fire.extinguish(newFirefighterPosition);
}
firefighterPositions = firefighterNewPositions;
}
}
......@@ -13,22 +13,27 @@ public class FirefighterBoard implements Board<List<ModelElement>> {
private final int initialFireCount;
private final int initialFirefighterCount;
private final int initialCloudCount;
private final int initialFireTruckCount;
private int step = 0;
public Fire fire;
public FireFighters fireFighters;
public FireFighterPerson fireFighters;
public FireTruck fireTrucks;
public Cloud cloud;
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 initialFireTruckCount) {
this.columnCount = columnCount;
this.rowCount = rowCount;
this.initialFireCount = initialFireCount;
this.initialFirefighterCount = initialFirefighterCount;
this.initialCloudCount = initialCloudCount;
this.initialFireTruckCount = initialFireTruckCount;
fire = new Fire(columnCount, rowCount);
fireFighters = new FireFighters(columnCount, rowCount, fire);
fireFighters = new FireFighterPerson(columnCount, rowCount, fire);
cloud = new Cloud(columnCount, rowCount, fire);
fireTrucks = new FireTruck(columnCount, rowCount, fire);
initializeElements();
}
......@@ -36,6 +41,7 @@ public class FirefighterBoard implements Board<List<ModelElement>> {
fire.initializeElements(initialFireCount, rowCount, columnCount);
fireFighters.initializeElements(initialFirefighterCount, rowCount, columnCount);
cloud.initializeElements(initialCloudCount, rowCount, columnCount);
fireTrucks.initializeElements(initialFireTruckCount, rowCount, columnCount);
}
......@@ -48,6 +54,8 @@ public class FirefighterBoard implements Board<List<ModelElement>> {
result.add(ModelElement.FIREFIGHTER);
if (cloud.cloudPositions.contains(position))
result.add(ModelElement.CLOUD);
if (fireTrucks.firefighterPositions.contains(position))
result.add(ModelElement.FIRETRUCK);
return result;
}
......@@ -67,15 +75,17 @@ public class FirefighterBoard implements Board<List<ModelElement>> {
modifiedElements.addAll(fire.firePositions);
modifiedElements.addAll(fireFighters.firefighterPositions);
modifiedElements.addAll(cloud.cloudPositions);
modifiedElements.addAll(fireTrucks.firefighterPositions);
fireFighters.nextMove();
//System.out.println(fireFighters.firefighterPositions);
fireTrucks.nextMove();
cloud.nextMove();
fire.extinguishs(fireFighters.firefighterPositions);
//System.out.println(fire.firePositions);
fire.extinguishs(fireTrucks.firefighterPositions);
fire.extinguishs(cloud.cloudPositions);
if (step % 2 == 0)
......@@ -86,6 +96,7 @@ public class FirefighterBoard implements Board<List<ModelElement>> {
modifiedElements.addAll(fire.firePositions);
modifiedElements.addAll(fireFighters.firefighterPositions);
modifiedElements.addAll(cloud.cloudPositions);
modifiedElements.addAll(fireTrucks.firefighterPositions);
return modifiedElements;
}
......@@ -114,6 +125,7 @@ public class FirefighterBoard implements Board<List<ModelElement>> {
case FIRE -> fire.firePositions.add(position);
case FIREFIGHTER -> fireFighters.firefighterPositions.add(position);
case CLOUD -> cloud.cloudPositions.add(position);
case FIRETRUCK -> fireTrucks.firefighterPositions.add(position);
}
}
}
......
package model;
public enum ModelElement {
FIREFIGHTER, FIRE, CLOUD
FIREFIGHTER, FIRE, CLOUD, FIRETRUCK
}
......@@ -3,7 +3,7 @@ package view;
import javafx.scene.paint.Color;
public enum ViewElement {
FIREFIGHTER(Color.BLUE), FIRE(Color.RED), EMPTY(Color.WHITE), CLOUD(Color.GRAY);
FIREFIGHTER(Color.BLUE), FIRE(Color.RED), EMPTY(Color.WHITE), CLOUD(Color.GRAY), FIRETRUCK(Color.CYAN);
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