Skip to content
Snippets Groups Projects
Commit 6e705dab authored by Yanis O's avatar Yanis O
Browse files

Rangement dans des package

parent fc3acaba
No related branches found
No related tags found
No related merge requests found
Pipeline #40640 failed
Showing
with 67 additions and 29 deletions
......@@ -13,16 +13,16 @@ import javafx.stage.Stage;
public class SimulatorApplication extends javafx.application.Application {
private static final String VIEW_RESOURCE_PATH = "/view/view.fxml";
private static final String APP_NAME = "Firefighter simulator";
private static final int ROW_COUNT = 50;
private static final int COLUMN_COUNT = 50;
private static final int ROW_COUNT = 40;
private static final int COLUMN_COUNT = 40;
private static final int BOX_WIDTH = 15;
private static final int BOX_HEIGHT = 15;
public static final int INITIAL_FIRE_COUNT = 6;
public static final int INITIAL_FIREFIGHTER_COUNT = 32;
public static final int INITIAL_MOTORIZED_FIREFIGHTER_COUNT = 10;
public static final int INITIAL_CLOUD_COUNT = 15;
public static final int INITIAL_MOUNTAIN_COUNT= 28;
public static final int TURNS_FOR_SPAWNING_AIRTANKER = 4;
public static final int INITIAL_FIRE_COUNT = 8;
public static final int INITIAL_FIREFIGHTER_COUNT = 6;
public static final int INITIAL_MOTORIZED_FIREFIGHTER_COUNT = 8;
public static final int INITIAL_CLOUD_COUNT = 20;
public static final int INITIAL_MOUNTAIN_COUNT= 20;
public static final int TURNS_FOR_SPAWNING_AIRTANKER = 10;
private Stage primaryStage;
private Parent view;
......
......@@ -20,15 +20,15 @@ import javafx.scene.control.ToggleGroup;
import javafx.util.Duration;
import javafx.util.Pair;
import model.Board;
import model.Cloud;
import model.EntityFactory;
import model.Fire;
import model.FireFighter;
import model.FireFighterScenario;
import model.MotorizedFireFighter;
import model.Mountain;
import model.Rockery;
import model.Square;
import model.firefighterscenario.Cloud;
import model.firefighterscenario.Fire;
import model.firefighterscenario.FireFighter;
import model.firefighterscenario.FireFighterScenario;
import model.firefighterscenario.MotorizedFireFighter;
import model.firefighterscenario.Mountain;
import model.firefighterscenario.Rockery;
import util.Position;
import view.Grid;
import view.ViewElement;
......@@ -136,7 +136,7 @@ public class Controller {
entityCounts.put((pos, b) -> new MotorizedFireFighter(pos, b), initialMotorizedFirefightersCount);
entityCounts.put((pos, b) -> new Cloud(pos, b), initialcloudCount);
entityCounts.put((pos, b) -> new Mountain(pos), initialmountaincount);
entityCounts.put((pos, b) -> new Rockery(pos), 30);
entityCounts.put((pos, b) -> new Rockery(pos), 3);
model.placeInitialEntities(entityCounts);
this.setModel(model);
......
package model;
package model.firefighterscenario;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import javafx.scene.paint.Color;
import model.Board;
import model.Entity;
import model.Square;
import util.Direction;
import util.Position;
import util.PositionUtil;
......
package model;
package model.firefighterscenario;
import java.util.List;
import java.util.Random;
import javafx.scene.paint.Color;
import model.Board;
import model.EmptySquare;
import model.Entity;
import model.Square;
import util.Position;
import util.PositionUtil;
......@@ -37,6 +41,9 @@ public class Cloud implements Entity{
adjacentPositions.removeIf(p -> b.doesSquareContainEntity(p, FireFighter.class));
// Choisir une position aléatoire parmi les mouvements possibles
if(adjacentPositions.size() < 0){
return List.of();
}
Position next_position = adjacentPositions.get(new Random().nextInt(adjacentPositions.size()));
// Si la nouvelle position contient un feu, éteindre le feu
......
package model;
package model.firefighterscenario;
import java.util.ArrayList;
import java.util.List;
......@@ -6,6 +6,9 @@ import java.util.Objects;
import java.util.Optional;
import javafx.scene.paint.Color;
import model.Board;
import model.Entity;
import model.Square;
import util.Position;
import util.PositionUtil;
......
package model;
package model.firefighterscenario;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import javafx.scene.paint.Color;
import model.Board;
import model.EmptySquare;
import model.Entity;
import model.Square;
import util.Position;
import util.PositionUtil;
......@@ -129,7 +133,7 @@ public class FireFighter implements Entity {
List<Position> possibleMoves = PositionUtil.generateAllAdjacentPositions(currentPos, b);
// Filter out positions that are not empty or contain obstacles
possibleMoves.removeIf(p -> !b.isPositionEmpty(p) || b.doesSquareContainEntity(p, Mountain.class));
possibleMoves.removeIf(p -> b.doesSquareContainEntity(p, Mountain.class));
// If no possible moves, return null
if (possibleMoves.isEmpty()) {
......
package model;
package model.firefighterscenario;
import java.util.ArrayList;
import java.util.Iterator;
......@@ -6,6 +6,13 @@ import java.util.List;
import java.util.Map;
import java.util.Random;
import app.SimulatorApplication;
import model.Board;
import model.Entity;
import model.EntityFactory;
import model.EntityScenario;
import model.EntitySpawner;
import model.Square;
import util.Matrix;
import util.PathGenerator;
import util.Position;
......@@ -15,12 +22,14 @@ public class FireFighterScenario extends EntityScenario implements Board<Square>
private Matrix<Square> matrix;
private int step;
private int turnsToSpawnAirTanker;
private Map<EntityFactory, Integer> initialMap;
public FireFighterScenario(int columns, int rows) {
this.matrix = new Matrix<Square>(columns, rows);
initScenario(matrix);
this.turnsToSpawnAirTanker = SimulatorApplication.TURNS_FOR_SPAWNING_AIRTANKER;
this.step = 0;
}
......@@ -105,7 +114,8 @@ public class FireFighterScenario extends EntityScenario implements Board<Square>
this.step = this.step + 1;
// Check if it's time to spawn an AirTanker
if (this.step % 8 == 0) {
if (this.step % this.turnsToSpawnAirTanker == 0) {
System.out.println("apparation");
// Spawn an AirTanker at a random edge position
spawnAirTanker(changedPositions);
}
......
package model;
package model.firefighterscenario;
import java.util.ArrayList;
import java.util.List;
import javafx.scene.paint.Color;
import model.Board;
import model.Square;
import util.Position;
import util.PositionUtil;
......
package model;
package model.firefighterscenario;
import java.util.List;
import javafx.scene.paint.Color;
import model.Board;
import model.Entity;
import model.Square;
import util.Position;
public class Mountain implements Entity{
......
package model;
package model.firefighterscenario;
import java.util.List;
import javafx.scene.paint.Color;
import model.Board;
import model.Entity;
import model.Square;
import util.Position;
public class Road implements Entity{
......
package model;
package model.firefighterscenario;
import java.util.List;
import javafx.scene.paint.Color;
import model.Board;
import model.Entity;
import model.Square;
import util.Position;
public class Rockery implements Entity{
......
......@@ -5,9 +5,9 @@ import java.util.ArrayList;
import java.util.Iterator;
import java.util.NoSuchElementException;
import model.Fire;
import model.FireFighter;
import model.Square;
import model.firefighterscenario.Fire;
import model.firefighterscenario.FireFighter;
public class Matrix<E> implements Iterable<E> {
private ArrayList<ArrayList<E>> matrix;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment