Skip to content
Snippets Groups Projects
Commit ec82c683 authored by YOUSSOUF Ali moussa's avatar YOUSSOUF Ali moussa
Browse files

implementation de la classe Montains.java

parent 915ef056
No related branches found
No related tags found
No related merge requests found
......@@ -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_MONTAIN_COUNT = 4;
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(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_MONTAIN_COUNT);
}
private void showScene() {
......
......@@ -91,6 +91,9 @@ public class Controller {
if (model instanceof Cloud){
return new CLOUD();
}
if(model instanceof Montains){
return new MONTAINS();
}
}
......@@ -130,9 +133,9 @@ public class Controller {
}
public void initialize(int squareWidth, int squareHeight, int columnCount,
int rowCount, int initialFireCount, int initialFirefighterCount, int initialCloudsCount) {
int rowCount, int initialFireCount, int initialFirefighterCount, int initialCloudsCount, int initialMontainsCount) {
grid.setDimensions(columnCount, rowCount, squareWidth, squareHeight);
this.setModel(new FirefighterBoard(columnCount, rowCount, initialFireCount, initialFirefighterCount,initialCloudsCount));
this.setModel(new FirefighterBoard(columnCount, rowCount, initialFireCount, initialFirefighterCount,initialCloudsCount, initialMontainsCount));
repaintGrid();
}
......
package model;
import util.Position;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import java.util.Set;
public class BoardMethods {
int columnCount;
int rowCount;
private final Random randomGenerator = new Random();
public void extinguish(Position position, Set<Position> firPositions) {
firPositions.remove(position);
}
public List<Position> neighbors(Position position, int rowCount, int columnCount) {
List<Position> list = new ArrayList<>();
if (position.row() > 0) list.add(new Position(position.row() - 1, position.column()));
if (position.column() > 0) list.add(new Position(position.row(), position.column() - 1));
if (position.row() < rowCount - 1) list.add(new Position(position.row() + 1, position.column()));
if (position.column() < columnCount - 1) list.add(new Position(position.row(), position.column() + 1));
return list;
}
public Position randomPosition() {
if (rowCount <= 0 || columnCount <= 0) {
throw new IllegalArgumentException("Les limites doivent être positives");
}
return new Position(randomGenerator.nextInt(rowCount), randomGenerator.nextInt(columnCount));
}
}
......@@ -4,12 +4,11 @@ import util.Position;
import java.util.*;
public class Cloud implements ModelElement{
public class Cloud extends BoardMethods implements ModelElement{
private List<Position> cloudsPositions;
private int rowCount;
private int columnCount;
private final Random randomGenerator = new Random();
public Cloud() {
}
......@@ -35,13 +34,6 @@ public class Cloud implements ModelElement{
}
public Position randomPosition() {
if (rowCount <= 0 || columnCount <= 0) {
throw new IllegalArgumentException("Les limites doivent être positives");
}
return new Position(randomGenerator.nextInt(rowCount), randomGenerator.nextInt(columnCount));
}
private Position randomMoveToNeighbor(Position position){
List<Position> list = new ArrayList<>();
......@@ -52,14 +44,7 @@ public class Cloud implements ModelElement{
return list.get((int) (Math.random() * list.size()));
}
private List<Position> neighbors(Position position) {
List<Position> list = new ArrayList<>();
if (position.row() > 0) list.add(new Position(position.row() - 1, position.column()));
if (position.column() > 0) list.add(new Position(position.row(), position.column() - 1));
if (position.row() < rowCount - 1) list.add(new Position(position.row() + 1, position.column()));
if (position.column() < columnCount - 1) list.add(new Position(position.row(), position.column() + 1));
return list;
}
public List<Position> updateCouds(Set<Position> firePositions) {
List<Position> result = new ArrayList<>();
List<Position> cloudsNewPositions = new ArrayList<>();
......@@ -79,9 +64,6 @@ public class Cloud implements ModelElement{
return result;
}
private void extinguish(Position position,Set<Position> firePositions ) {
firePositions.remove(position);
}
......
......@@ -12,18 +12,21 @@ public class FirefighterBoard implements Board<List<ModelElement>> {
private final int initialFirefighterCount;
private final int initialCloudsCount;
private final int initialMontainCount;
private Fires fires;
private FireFighters fireFighters;
private Cloud clouds;
private Montains Montains;
private int step = 0;
public FirefighterBoard(int columnCount, int rowCount, int initialFireCount, int initialFirefighterCount, int initialCloudsCount) {
public FirefighterBoard(int columnCount, int rowCount, int initialFireCount, int initialFirefighterCount, int initialCloudsCount, int initialMontainCount) {
this.columnCount = columnCount;
this.rowCount = rowCount;
this.initialFireCount = initialFireCount;
this.initialFirefighterCount = initialFirefighterCount;
this.initialCloudsCount = initialCloudsCount;
this.initialMontainCount = initialMontainCount;
initializeElements();
}
......@@ -31,9 +34,11 @@ public class FirefighterBoard implements Board<List<ModelElement>> {
this.fires = new Fires();
this.fireFighters = new FireFighters();
this.clouds = new Cloud();
this.Montains = new Montains();
fires.initializeElements(initialFireCount,rowCount,columnCount);
fireFighters.initializeElements(initialFirefighterCount,rowCount,columnCount);
clouds.initializeElements(initialCloudsCount,rowCount, columnCount);
Montains.initializeElements(initialMontainCount, rowCount,columnCount);
}
@Override
......@@ -43,6 +48,10 @@ public class FirefighterBoard implements Board<List<ModelElement>> {
if (firefighterPosition.equals(position))
result.add(new FireFighters());
for(Position MaintainPosition : Montains.getMontainsPositions())
if (MaintainPosition.equals(position))
result.add(new Montains());
for(Position cloudsPositions : clouds.getCloudsPositions())
if (cloudsPositions.equals(position))
result.add(new Cloud());
......@@ -91,7 +100,7 @@ public class FirefighterBoard implements Board<List<ModelElement>> {
@Override
public void setState(List<ModelElement> state, Position position) {
fires.extinguish(position);
//fires.extinguish(position);
for (;;) {
if (!fireFighters.getFireFightersPositions().remove(position)) break;
}
......@@ -107,6 +116,9 @@ public class FirefighterBoard implements Board<List<ModelElement>> {
if (element instanceof Cloud){
clouds.add(position);
}
if(element instanceof Montains){
Montains.add(position);
}
}
}
......
......@@ -4,15 +4,12 @@ import util.Position;
import java.util.*;
public class Fires implements ModelElement {
public class Fires extends BoardMethods implements ModelElement {
private Set<Position> firePositions;
private int step;
private int rowCount;
private int columnCount;
private final Random randomGenerator = new Random();
public Fires() {
}
......@@ -52,27 +49,8 @@ public class Fires implements ModelElement {
firePositions.add(randomPosition());
}
@Override
public Position randomPosition() {
if (rowCount <= 0 || columnCount <= 0) {
throw new IllegalArgumentException("Les limites doivent être positives");
}
return new Position(randomGenerator.nextInt(rowCount), randomGenerator.nextInt(columnCount));
}
public void extinguish(Position position) {
firePositions.remove(position);
}
private List<Position> neighbors(Position position, int rowCount, int columnCount) {
List<Position> list = new ArrayList<>();
if (position.row() > 0) list.add(new Position(position.row() - 1, position.column()));
if (position.column() > 0) list.add(new Position(position.row(), position.column() - 1));
if (position.row() < rowCount - 1) list.add(new Position(position.row() + 1, position.column()));
if (position.column() < columnCount - 1) list.add(new Position(position.row(), position.column() + 1));
return list;
}
}
package model;
public class Montains {
import util.Position;
import java.util.*;
public class Montains extends BoardMethods implements ModelElement {
private Set<Position> MontainsPositions;
public Montains() {
}
public void add(Position newPositions){
MontainsPositions.add(newPositions);
}
public Set<Position> getMontainsPositions() {
return MontainsPositions;
}
public void initializeElements(int initialFireCount, int rowCount, int columnCount) {
this.columnCount = columnCount;
this.rowCount = rowCount;
MontainsPositions = new HashSet<>();
for (int index = 0; index < initialFireCount; index++)
MontainsPositions.add(randomPosition());
}
}
......@@ -5,6 +5,6 @@ import javafx.scene.paint.Color;
public class MONTAINS implements ViewElement {
@Override
public Color getColor() {
return Color.BROWN;
return Color.BLACK;
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment