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
Branches
No related tags found
No related merge requests found
...@@ -17,10 +17,6 @@ public class SimulatorApplication extends javafx.application.Application { ...@@ -17,10 +17,6 @@ public class SimulatorApplication extends javafx.application.Application {
private static final int COLUMN_COUNT = 20; private static final int COLUMN_COUNT = 20;
private static final int BOX_WIDTH = 50; private static final int BOX_WIDTH = 50;
private static final int BOX_HEIGHT = 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; private Stage primaryStage;
...@@ -46,8 +42,7 @@ public class SimulatorApplication extends javafx.application.Application { ...@@ -46,8 +42,7 @@ public class SimulatorApplication extends javafx.application.Application {
loader.setLocation(location); loader.setLocation(location);
view = loader.load(); view = loader.load();
Controller controller = loader.getController(); Controller controller = loader.getController();
controller.initialize(BOX_WIDTH, BOX_HEIGHT, COLUMN_COUNT, ROW_COUNT, controller.initialize(BOX_WIDTH, BOX_HEIGHT, COLUMN_COUNT, ROW_COUNT);
INITIAL_FIRE_COUNT, INITIAL_FIREFIGHTER_COUNT,INITIAL_CLOUD_COUNT,INITIAL_ROAD_COUNT);
} }
private void showScene() { private void showScene() {
......
...@@ -131,9 +131,9 @@ public class Controller { ...@@ -131,9 +131,9 @@ public class Controller {
} }
public void initialize(int squareWidth, int squareHeight, int columnCount, 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); grid.setDimensions(columnCount, rowCount, squareWidth, squareHeight);
this.setModel(new FirefighterBoard(columnCount, rowCount, initialFireCount, initialFirefighterCount,initialCloudCount,initialRoadCount)); this.setModel(new FirefighterBoard(columnCount, rowCount));
repaintGrid(); repaintGrid();
} }
......
...@@ -2,7 +2,6 @@ package model; ...@@ -2,7 +2,6 @@ package model;
import util.Neighbour; import util.Neighbour;
import util.Position; import util.Position;
import util.TargetStrategy;
import java.util.*; import java.util.*;
...@@ -10,11 +9,6 @@ import java.util.*; ...@@ -10,11 +9,6 @@ import java.util.*;
public class FirefighterBoard implements Board<List<ModelElement>> { public class FirefighterBoard implements Board<List<ModelElement>> {
private final int columnCount; private final int columnCount;
private final int rowCount; 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, Fire> fires = new HashMap<>();
private Map<Position, Extinguisher> extinguishers = new HashMap<>(); private Map<Position, Extinguisher> extinguishers = new HashMap<>();
...@@ -25,17 +19,13 @@ public class FirefighterBoard implements Board<List<ModelElement>> { ...@@ -25,17 +19,13 @@ public class FirefighterBoard implements Board<List<ModelElement>> {
private int step = 0; private int step = 0;
private final Random randomGenerator = new Random(); 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.columnCount = columnCount;
this.rowCount = rowCount; this.rowCount = rowCount;
this.positions = new Position[rowCount][columnCount]; this.positions = new Position[rowCount][columnCount];
this.neighbour = new Neighbour(this); this.neighbour = new Neighbour(this);
initializePositions(); initializePositions();
this.initialFireCount = initialFireCount;
this.initialFirefighterCount = initialFirefighterCount;
this.initialCloudCount = initialCloudCount;
this.initialRoadCount = initialRoadCount;
initializeElements(); initializeElements();
} }
...@@ -48,30 +38,19 @@ public class FirefighterBoard implements Board<List<ModelElement>> { ...@@ -48,30 +38,19 @@ public class FirefighterBoard implements Board<List<ModelElement>> {
} }
public void initializeElements() { public void initializeElements() {
fires.clear(); for(ModelElement modelElement : ModelElement.values()){
extinguishers.clear(); for(int elementCount = 0; elementCount< modelElement.getInitialNumber();elementCount++){
obstacles.clear();
for (int index = 0; index < initialFireCount; index++) {
Position position = randomPosition(); Position position = randomPosition();
fires.put(position,new Fire(position)); if(modelElement.isObstacle()){
obstacles.put(position, (Obstacle) modelElement.getModelElementClass(position));
} else if (modelElement.isExtinguisher()) {
extinguishers.put(position, (Extinguisher) modelElement.getModelElementClass(position));
} }
else{
for (int index = 0; index < initialFirefighterCount; index++) { fires.put(position, (Fire) modelElement.getModelElementClass(position));
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));
} }
} }
private Position randomPosition() { private Position randomPosition() {
...@@ -131,9 +110,6 @@ public class FirefighterBoard implements Board<List<ModelElement>> { ...@@ -131,9 +110,6 @@ public class FirefighterBoard implements Board<List<ModelElement>> {
return step; return step;
} }
public Map<Position,Fire>getFires(){ public Map<Position,Fire>getFires(){
return this.fires; return this.fires;
} }
......
package model; package model;
import util.Position;
import java.util.ArrayList;
import java.util.List;
public enum ModelElement { public enum ModelElement {
FIREFIGHTER(10), FIREFIGHTER(10),
FIRE(10), FIRE(10),
CLOUD(10), CLOUD(10),
ROAD(5); ROAD(5);
private final int initialNumber;
ModelElement(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 { ...@@ -41,6 +41,6 @@ public class Neighbour {
public Map<Position, List<Position>> getNeighbors() { public Map<Position, List<Position>> getNeighbors() {
return neighbors; return this.neighbors;
} }
} }
package util; package util;
import model.Board;
import model.FirefighterBoard;
import java.util.Random;
public record Position(int row, int column) { public record Position(int row, int column) {
} }
...@@ -10,17 +10,17 @@ import static org.assertj.core.api.Assertions.*; ...@@ -10,17 +10,17 @@ import static org.assertj.core.api.Assertions.*;
public class FirefighterBoardTest { public class FirefighterBoardTest {
@Test @Test
void testColumnCount(){ 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); assertThat(board.columnCount()).isEqualTo(20);
} }
@Test @Test
void testRowCount(){ 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); assertThat(board.rowCount()).isEqualTo(10);
} }
@Test @Test
void testStepNumber(){ 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++){ for(int index = 0; index < 10; index++){
assertThat(board.stepNumber()).isEqualTo(index); assertThat(board.stepNumber()).isEqualTo(index);
board.updateToNextGeneration(); board.updateToNextGeneration();
...@@ -29,7 +29,7 @@ public class FirefighterBoardTest { ...@@ -29,7 +29,7 @@ public class FirefighterBoardTest {
} }
@Test @Test
void testGetState_afterSet(){ 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); Position position = new Position(1,2);
assertThat(board.getState(position)).isEmpty(); assertThat(board.getState(position)).isEmpty();
board.setState(List.of(ModelElement.FIRE), position); 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