Skip to content
Snippets Groups Projects
Commit cf33c3bd authored by melizzzz's avatar melizzzz
Browse files

Ajout des montagnes

parent 7257ba96
Branches
No related tags found
No related merge requests found
Pipeline #39651 passed
......@@ -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 = 6;
public static final int INITIAL_MOUNTAIN_COUNT= 30;
private Stage primaryStage;
private Parent view;
......@@ -46,7 +47,7 @@ public class SimulatorApplication extends javafx.application.Application {
view = loader.load();
Controller controller = loader.getController();
controller.initialize(BOX_WIDTH, BOX_HEIGHT, COLUMN_COUNT, ROW_COUNT,
INITIAL_FIRE_COUNT, INITIAL_FIREFIGHTER_COUNT, INITIAL_CLOUD_COUNT);
INITIAL_FIRE_COUNT, INITIAL_FIREFIGHTER_COUNT, INITIAL_CLOUD_COUNT, INITIAL_MOUNTAIN_COUNT);
}
private void showScene() {
......
......@@ -122,9 +122,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 initialmountaincount) {
grid.setDimensions(columnCount, rowCount, squareWidth, squareHeight);
this.setModel(new FireFighterScenario(columnCount, rowCount, initialFireCount, initialFirefighterCount, initialcloudCount));
this.setModel(new FireFighterScenario(columnCount, rowCount, initialFireCount, initialFirefighterCount, initialcloudCount, initialmountaincount));
repaintGrid();
}
......
......@@ -33,6 +33,8 @@ public class Cloud implements Entity{
public List<Position> nextTurn(Board<Square> b) {
List<Position> adjacentPositions = PositionUtil.generateAdjacentPositions(position, b);
adjacentPositions.removeIf( p -> b.doesSquareContainEntity(p, Cloud.class));
adjacentPositions.removeIf( p -> b.doesSquareContainEntity(p, Mountain.class));
// Filtrer pour obtenir uniquement les positions qui ne contiennent pas de pompier
adjacentPositions.removeIf(p -> b.doesSquareContainEntity(p, FireFighter.class));
......
......@@ -8,7 +8,7 @@ import util.Position;
public class EmptyEntity implements Entity{
private final int priority=3;
private Position position;
private int age;
public EmptyEntity(Position position){
......@@ -55,5 +55,8 @@ public class EmptyEntity implements Entity{
public Color getViewColor() {
return Color.WHITE;
}
@Override
public int getPriority(){return this.priority;}
}
\ No newline at end of file
......@@ -11,6 +11,7 @@ public class EmptySquare implements Entity {
private Position position;
private final Color viewColor = Color.WHITE;
private int age;
private final int priotity = 0;
public EmptySquare(Position p) {
this.position = p;
......@@ -55,4 +56,9 @@ public class EmptySquare implements Entity {
public void setAge(int age) {
this.age = age;
}
@Override
public int getPriority(){
return this.priotity;
}
}
......@@ -32,6 +32,7 @@ public class Fire implements Entity {
if (board.getStepNumber() % 2 == 0)
return new ArrayList<Position>();
List<Position> positions = PositionUtil.generateAdjacentPositions(position, board);
positions.removeIf( p -> b.doesSquareContainEntity(p, Mountain.class));
for (Position p : positions) {
if (b.getStates(p).isEmpty() && !b.getStates(p).getEntities().contains(Cloud.class)) {
if (b.getStates(p).getMaxAge() < b.getStepNumber()
......
package model;
import java.util.*;
import javafx.scene.paint.Color;
import util.*;
import java.util.ArrayList;
import java.util.List;
import javafx.scene.paint.Color;
import util.Position;
import util.PositionUtil;
import util.PositionUtil;
public class FireFighter implements Entity {
private int age;
......@@ -29,6 +26,7 @@ public class FireFighter implements Entity {
// Générer les positions adjacentes
List<Position> adjacentPositions = PositionUtil.generateAdjacentPositions(position, b);
adjacentPositions.removeIf( p -> b.doesSquareContainEntity(p, Mountain.class));
// Vérifier s'il y a du feu dans une des positions adjacentes
boolean hasFire = adjacentPositions.stream()
......
......@@ -22,21 +22,24 @@ public class FireFighterScenario extends EntityScenario implements Board<Square>
private int initialFireCount;
private int initialFireFightersCount;
private int intialCloudCount;
private int initialMoutainCount;
public FireFighterScenario(int columns, int rows, int initialFireCount, int initialFireFightersCount, int initialCloudCount) {
public FireFighterScenario(int columns, int rows, int initialFireCount, int initialFireFightersCount, int initialCloudCount, int initialMoutainCount) {
this.matrix = new Matrix<Square>(columns, rows);
this.initialFireCount = initialFireCount;
this.initialFireFightersCount = initialFireFightersCount;
this.intialCloudCount = initialCloudCount;
this.initialMoutainCount = initialMoutainCount;
initScenario(matrix);
placeInitialActors(initialFireCount, initialFireFightersCount, initialCloudCount);
placeInitialActors(initialFireCount, initialFireFightersCount, initialCloudCount, initialMoutainCount);
this.step = 0;
}
private void placeInitialActors(int initialFireCount, int initialFireFightersCount, int initialCloudCount) {
private void placeInitialActors(int initialFireCount, int initialFireFightersCount, int initialCloudCount, int initialMoutainCount) {
int fireCount = 0;
int fireFighterCount = 0;
int cloudCount = 0;
int moutainCount = 0;
int chance = 5; // Chance initiale en pourcentage
Random random = new Random();
List<Position> positions = new ArrayList<>();
......@@ -54,7 +57,7 @@ public class FireFighterScenario extends EntityScenario implements Board<Square>
if (fireCount < initialFireCount && random.nextInt(100) < chance) {
setSquare(new Square(pos, new Fire(pos, this, 1)));
fireCount++;
if (fireCount == initialFireCount && fireFighterCount == initialFireFightersCount && cloudCount == initialCloudCount) {
if (fireCount == initialFireCount && fireFighterCount == initialFireFightersCount && cloudCount == initialCloudCount && moutainCount == initialMoutainCount) {
return;
}
continue;
......@@ -63,7 +66,7 @@ public class FireFighterScenario extends EntityScenario implements Board<Square>
if (fireFighterCount < initialFireFightersCount && random.nextInt(100) < chance) {
setSquare(new Square(pos, new FireFighter(pos, this, 1)));
fireFighterCount++;
if (fireCount == initialFireCount && fireFighterCount == initialFireFightersCount && cloudCount == initialCloudCount) {
if (fireCount == initialFireCount && fireFighterCount == initialFireFightersCount && cloudCount == initialCloudCount && moutainCount == initialMoutainCount) {
return;
}
}
......@@ -71,7 +74,15 @@ public class FireFighterScenario extends EntityScenario implements Board<Square>
if (cloudCount < intialCloudCount && random.nextInt(100) < chance) {
setSquare(new Square(pos, new Cloud(pos, this, 1)));
cloudCount++;
if (fireCount == initialFireCount && fireFighterCount == initialFireFightersCount && cloudCount == initialCloudCount) {
if (fireCount == initialFireCount && fireFighterCount == initialFireFightersCount && cloudCount == initialCloudCount && moutainCount == initialMoutainCount) {
return;
}
}
if (moutainCount < initialMoutainCount && random.nextInt(100) < chance) {
setSquare(new Square(pos, new Mountain(pos, 1)));
moutainCount++;
if (fireCount == initialFireCount && fireFighterCount == initialFireFightersCount && cloudCount == initialCloudCount && moutainCount == initialMoutainCount) {
return;
}
}
......@@ -198,7 +209,7 @@ public class FireFighterScenario extends EntityScenario implements Board<Square>
step = 0;
matrix.clear();
initScenario(matrix);
placeInitialActors(initialFireCount, initialFireFightersCount, intialCloudCount);
placeInitialActors(initialFireCount, initialFireFightersCount, intialCloudCount, initialMoutainCount);
}
public int stepNumber() {
......
package model;
import javafx.scene.paint.Color;
import util.Position;
import java.util.List;
public class Mountain implements Entity{
private final int priority = 3;
Position position;
private int age;
private final Color viewColor = Color.YELLOW;
public Mountain(Position p ){
this.position = p;
}
public Mountain(Position p , int age){
this.position = p;
this.age = age;
}
@Override
public List<Position> nextTurn(Board<Square> board) {
return List.of();
}
@Override
public Position getPosition() {
return this.position;
}
@Override
public void setPosition(Position p) {
this.position = position;
}
@Override
public int getAge() {
return this.age;
}
@Override
public void setAge(int age) {
this.age = age;
}
@Override
public void incrementAge() {
this.age += 1;
}
@Override
public Color getViewColor() {
return this.viewColor;
}
@Override
public int getPriority() {
return this.priority;
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment