Skip to content
Snippets Groups Projects
Commit 1406b784 authored by MEHDI's avatar MEHDI
Browse files

mehdi and mohamed : finishing ModelElement modifications and changing...

mehdi and mohamed : finishing ModelElement modifications and changing FirefighterBoard implementation
parent 2da50ff2
No related branches found
No related tags found
No related merge requests found
......@@ -17,10 +17,6 @@ public class SimulatorApplication extends javafx.application.Application {
private static final int COLUMN_COUNT = 20;
private static final int BOX_WIDTH = 50;
private static final int BOX_HEIGHT = 50;
public static final int INITIAL_FIRE_COUNT = 10;
public static final int INITIAL_FIREFIGHTER_COUNT = 10;
public static final int INITIAL_CLOUD_COUNT = 5;
public static final int INITIAL_ROAD_COUNT = 5;
private Stage primaryStage;
......@@ -46,8 +42,7 @@ public class SimulatorApplication extends javafx.application.Application {
loader.setLocation(location);
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_ROAD_COUNT);
controller.initialize(BOX_WIDTH, BOX_HEIGHT, COLUMN_COUNT, ROW_COUNT);
}
private void showScene() {
......
......@@ -131,9 +131,9 @@ public class Controller {
}
public void initialize(int squareWidth, int squareHeight, int columnCount,
int rowCount, int initialFireCount, int initialFirefighterCount,int initialCloudCount,int initialRoadCount) {
int rowCount) {
grid.setDimensions(columnCount, rowCount, squareWidth, squareHeight);
this.setModel(new FirefighterBoard(columnCount, rowCount, initialFireCount, initialFirefighterCount,initialCloudCount,initialRoadCount));
this.setModel(new FirefighterBoard(columnCount, rowCount));
repaintGrid();
}
......
......@@ -2,7 +2,6 @@ package model;
import util.Neighbour;
import util.Position;
import util.TargetStrategy;
import java.util.*;
......@@ -10,11 +9,6 @@ import java.util.*;
public class FirefighterBoard implements Board<List<ModelElement>> {
private final int columnCount;
private final int rowCount;
private final int initialFireCount;
private final int initialFirefighterCount;
private final int initialCloudCount;
private final int initialRoadCount;
private Map<Position, Fire> fires = new HashMap<>();
private Map<Position, Extinguisher> extinguishers = new HashMap<>();
......@@ -25,17 +19,13 @@ public class FirefighterBoard implements Board<List<ModelElement>> {
private int step = 0;
private final Random randomGenerator = new Random();
public FirefighterBoard(int columnCount, int rowCount, int initialFireCount, int initialFirefighterCount,int initialCloudCount,int initialRoadCount) {
public FirefighterBoard(int columnCount, int rowCount) {
this.columnCount = columnCount;
this.rowCount = rowCount;
this.positions = new Position[rowCount][columnCount];
this.neighbour = new Neighbour(this);
initializePositions();
this.initialFireCount = initialFireCount;
this.initialFirefighterCount = initialFirefighterCount;
this.initialCloudCount = initialCloudCount;
this.initialRoadCount = initialRoadCount;
initializeElements();
}
......@@ -48,30 +38,19 @@ public class FirefighterBoard implements Board<List<ModelElement>> {
}
public void initializeElements() {
fires.clear();
extinguishers.clear();
obstacles.clear();
for (int index = 0; index < initialFireCount; index++) {
Position position = randomPosition();
fires.put(position,new Fire(position));
}
for (int index = 0; index < initialFirefighterCount; index++) {
Position position = randomPosition();
extinguishers.put(position,new FireFighter(position));
}
for (int index = 0; index < initialCloudCount; index++) {
Position position = randomPosition();
extinguishers.put(position,new Cloud(position));
}
for (int index = 0; index < initialRoadCount; index++) {
Position position = randomPosition();
obstacles.put(position,new Road(position));
for(ModelElement modelElement : ModelElement.values()){
for(int elementCount = 0; elementCount< modelElement.getInitialNumber();elementCount++){
Position position = randomPosition();
if(modelElement.isObstacle()){
obstacles.put(position, (Obstacle) modelElement.getModelElementClass(position));
} else if (modelElement.isExtinguisher()) {
extinguishers.put(position, (Extinguisher) modelElement.getModelElementClass(position));
}
else{
fires.put(position, (Fire) modelElement.getModelElementClass(position));
}
}
}
}
private Position randomPosition() {
......@@ -131,9 +110,6 @@ public class FirefighterBoard implements Board<List<ModelElement>> {
return step;
}
public Map<Position,Fire>getFires(){
return this.fires;
}
......
package model;
import util.Position;
import java.util.ArrayList;
import java.util.List;
public enum ModelElement {
FIREFIGHTER(10),
FIRE(10),
CLOUD(10),
ROAD(5);
private final int initialNumber;
ModelElement(int initialNumber) {
this.initialNumber = initialNumber;
}
public int getInitialNumber(){
return this.initialNumber;
}
public Element getModelElementClass(Position position){
return switch (this){
case FIRE -> new Fire(position);
case ROAD -> new Road(position);
case FIREFIGHTER -> new FireFighter(position);
case CLOUD -> new Cloud(position);
default -> throw new IllegalArgumentException("Unknown ModelElement: " + this);
};
}
public static List<Integer> getInitialNumbers(){
List<Integer>listIninitalNumbers = new ArrayList<>();
for(ModelElement modelElement : ModelElement.values()){
listIninitalNumbers.add(modelElement.getInitialNumber());
}
return listIninitalNumbers;
}
public boolean isObstacle(){
if(this.getModelElementClass(null) instanceof Obstacle){
return true;
}
return false;
}
public boolean isExtinguisher(){
if(this.getModelElementClass(null) instanceof Extinguisher){
return true;
}
return false;
}
}
......@@ -41,6 +41,6 @@ public class Neighbour {
public Map<Position, List<Position>> getNeighbors() {
return neighbors;
return this.neighbors;
}
}
package util;
import model.Board;
import model.FirefighterBoard;
import java.util.Random;
public record Position(int row, int column) {
}
......@@ -10,17 +10,17 @@ import static org.assertj.core.api.Assertions.*;
public class FirefighterBoardTest {
@Test
void testColumnCount(){
Board<List<ModelElement>> board = new FirefighterBoard(20, 10, 1, 3,1,5);
Board<List<ModelElement>> board = new FirefighterBoard(20, 10);
assertThat(board.columnCount()).isEqualTo(20);
}
@Test
void testRowCount(){
Board<List<ModelElement>> board = new FirefighterBoard(20, 10, 1, 3,1,5);
Board<List<ModelElement>> board = new FirefighterBoard(20, 10);
assertThat(board.rowCount()).isEqualTo(10);
}
@Test
void testStepNumber(){
Board<List<ModelElement>> board = new FirefighterBoard(20, 10, 1, 3,1,5);
Board<List<ModelElement>> board = new FirefighterBoard(20, 10);
for(int index = 0; index < 10; index++){
assertThat(board.stepNumber()).isEqualTo(index);
board.updateToNextGeneration();
......@@ -29,7 +29,7 @@ public class FirefighterBoardTest {
}
@Test
void testGetState_afterSet(){
Board<List<ModelElement>> board = new FirefighterBoard(20, 10, 0, 0,1,5);
Board<List<ModelElement>> board = new FirefighterBoard(20, 10);
Position position = new Position(1,2);
assertThat(board.getState(position)).isEmpty();
board.setState(List.of(ModelElement.FIRE), position);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment