Skip to content
Snippets Groups Projects
Commit 1ecf9f7a authored by MAAZOUZ Ilyas's avatar MAAZOUZ Ilyas
Browse files

FTHFGHFGHFGHFH

parent cf27b66a
No related branches found
No related tags found
No related merge requests found
...@@ -15,6 +15,7 @@ import javafx.util.Pair; ...@@ -15,6 +15,7 @@ import javafx.util.Pair;
import model.Board; import model.Board;
import model.ModelElement; import model.ModelElement;
import model.FirefighterBoard; import model.FirefighterBoard;
import newmodel.*;
import util.Position; import util.Position;
import view.Grid; import view.Grid;
import view.ViewElement; import view.ViewElement;
...@@ -40,7 +41,7 @@ public class Controller { ...@@ -40,7 +41,7 @@ public class Controller {
@FXML @FXML
private Grid<ViewElement> grid; private Grid<ViewElement> grid;
private Timeline timeline; private Timeline timeline;
private Board<List<ModelElement>> board; private Fboard board;
//this function initialise the frame of the execution of updateboard function and adds the play&pause buttons //this function initialise the frame of the execution of updateboard function and adds the play&pause buttons
...@@ -58,8 +59,8 @@ public class Controller { ...@@ -58,8 +59,8 @@ public class Controller {
//this function checks if our model of the class firefighterboard is not null and raises an exception if so //this function checks if our model of the class firefighterboard is not null and raises an exception if so
// and affect the model to board // and affect the model to board
private void setModel(FirefighterBoard firefighterBoard) { private void setModel(Fboard board) {
this.board = requireNonNull(firefighterBoard, "firefighter.model is null"); this.board = requireNonNull(board, "firefighter.model is null");
} }
//this function is a combination of multiple functions that re update the board elements get the new positions and colors of new elements //this function is a combination of multiple functions that re update the board elements get the new positions and colors of new elements
...@@ -149,7 +150,13 @@ public class Controller { ...@@ -149,7 +150,13 @@ 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 rowCount, int initialFireCount, int initialFirefighterCount) {
grid.setDimensions(columnCount, rowCount, squareWidth, squareHeight); grid.setDimensions(columnCount, rowCount, squareWidth, squareHeight);
this.setModel(new FirefighterBoard(columnCount, rowCount, initialFireCount, initialFirefighterCount)); List<item> items= new ArrayList<>();
Fboard b=new Fboard(columnCount,rowCount);
List<item> list= new ArrayList<>();
list.add(new Fire(initialFireCount,b));
list.add(new FireFighter(initialFirefighterCount,b));
b.setItems(list);
this.setModel(b);
repaintGrid(); repaintGrid();
} }
......
package newmodel; package newmodel;
import model.ModelElement;
import newmodel.Fboard; import newmodel.Fboard;
import util.Position; import util.Position;
import java.util.List; import java.util.List;
public abstract class Extinguisher implements item { public abstract class Extinguisher implements item {
final int ID=1;
public abstract List<Position> update(); public abstract List<Position> update();
public abstract void extinguish(Position position); public abstract void extinguish(Position position);
public abstract void setState(); public abstract void setState();
public abstract String getState(); public abstract ModelElement getState();
public abstract void initialize(); public abstract void initialize();
public abstract List<Position> getPositions(); public abstract List<Position> getPositions();
} }
}
...@@ -13,15 +13,17 @@ public class Fboard { ...@@ -13,15 +13,17 @@ public class Fboard {
private List<item> items; private List<item> items;
public Fboard(int columnCount, int rowCount, Fire fire ,List<item> items) { public Fboard(int columnCount, int rowCount) {
this.columnCount = columnCount; this.columnCount = columnCount;
this.rowCount = rowCount; this.rowCount = rowCount;
this.items=items;
} }
public int rowCount() { public int rowCount() {
return rowCount; return rowCount;
} }
public void setItems(List<item> s){
this.items=s;
}
public int columnCount() { public int columnCount() {
return columnCount; return columnCount;
...@@ -29,8 +31,16 @@ public class Fboard { ...@@ -29,8 +31,16 @@ public class Fboard {
public List<Position> updateToNextGeneration() { public List<Position> updateToNextGeneration() {
List<Position> result = new ArrayList<>(); List<Position> result = new ArrayList<>();
for(item item : items) for(item item : items){
if(item.getID()==1){
result.addAll(item.update());
}
}
for(item item : items){
if(item.getID()==0 && step % 2 ==0){
result.addAll(item.update()); result.addAll(item.update());
}
}
step++; step++;
return result; return result;
} }
...@@ -43,11 +53,17 @@ public class Fboard { ...@@ -43,11 +53,17 @@ public class Fboard {
initializeElements(); initializeElements();
} }
public void initializeElements() { public void initializeElements() {
fire.initialize(); for(item e: items) {
for(item e: extinguishers) { if(e.getID()==0){
e.initialize(); e.initialize();
} }
} }
for(item e:items){
if(e.getID()==1){
e.initialize();
}
}
}
public int getStep(){ public int getStep(){
return step; return step;
} }
...@@ -59,8 +75,14 @@ public class Fboard { ...@@ -59,8 +75,14 @@ public class Fboard {
return this.rowCount; return this.rowCount;
} }
public FireManager getFire(){ public Fire getFire() {
return this.fire; Fire x = null;
for (item e : items) {
if(e.getID()==0){
x= (Fire) e;
}
}
return x;
} }
public List<Position> neighbors(Position position) { public List<Position> neighbors(Position position) {
List<Position> list = new ArrayList<>(); List<Position> list = new ArrayList<>();
...@@ -79,7 +101,7 @@ public class Fboard { ...@@ -79,7 +101,7 @@ public class Fboard {
firstMove.put(initialMove, initialMove); firstMove.put(initialMove, initialMove);
while (!toVisit.isEmpty()) { while (!toVisit.isEmpty()) {
Position current = toVisit.poll(); Position current = toVisit.poll();
if (this.fire.getFirepositions().contains(current)) if (this.getFire().getPositions().contains(current))
return firstMove.get(current); return firstMove.get(current);
for (Position adjacent : neighbors(current)) { for (Position adjacent : neighbors(current)) {
if (seen.contains(adjacent)) continue; if (seen.contains(adjacent)) continue;
...@@ -91,15 +113,15 @@ public class Fboard { ...@@ -91,15 +113,15 @@ public class Fboard {
return position; return position;
} }
public List<String> getState(Position position){ public List<ModelElement> getState(Position position){
List<String> result = new ArrayList<>(); List<ModelElement> result = new ArrayList<>();
for (Extinguisher e :extinguishers){ for (item e :items){
if (e.getPositions().equals(position)){ if (e.getPositions().equals(position) && e.getID()==1){
result.add(e.getState()); result.add(e.getState());
} }
} }
if(fire.containsFire(position)) if(getFire().containsFire(position))
result.add(fire.getState()); result.add(getFire().getState());
return result; return result;
} }
......
package newmodel; package newmodel;
import model.ModelElement;
import util.Position; import util.Position;
import java.util.*; import java.util.*;
public class Fire extends FireManager { public class Fire implements item{
private final int initialFireCount; private final int initialFireCount;
private Set<Position> firePositions; private List<Position> firePositions;
private String state; private ModelElement state;
private final Random randomGenerator = new Random(); private final Random randomGenerator = new Random();
private final Fboard board; private final Fboard board;
private final int ID=0;
public Fire(int initialFireCount,Fboard b) { public Fire(int initialFireCount,Fboard b) {
this.initialFireCount = initialFireCount; this.initialFireCount = initialFireCount;
this.board=b; this.board=b;
...@@ -21,32 +24,41 @@ public class Fire extends FireManager { ...@@ -21,32 +24,41 @@ public class Fire extends FireManager {
public List<Position> update() { public List<Position> update() {
List<Position> result = new ArrayList<>(); List<Position> result = new ArrayList<>();
if (board.getStep() % 2 == 0) {
List<Position> newFirePositions = new ArrayList<>(); List<Position> newFirePositions = new ArrayList<>();
for (Position fire : firePositions) { for (Position fire : firePositions) {
newFirePositions.addAll(board.neighbors(fire)); newFirePositions.addAll(board.neighbors(fire));
} }
firePositions.addAll(newFirePositions); firePositions.addAll(newFirePositions);
result.addAll(newFirePositions); result.addAll(newFirePositions);
}
return result; return result;
} }
public void setState() { public void setState() {
state="Fire"; state=ModelElement.FIRE;
} }
public String getState() { public ModelElement getState() {
return state; return state;
} }
public int getID() {
return this.ID;
}
public void initialize() { public void initialize() {
firePositions = new HashSet<>(); firePositions = new ArrayList<>();
for (int index = 0; index < initialFireCount; index++) for (int index = 0; index < initialFireCount; index++)
firePositions.add(randomPosition()); firePositions.add(randomPosition());
} }
@Override
public List<Position> getPositions() {
return firePositions;
}
public Position randomPosition() { public Position randomPosition() {
return new Position(randomGenerator.nextInt(board.rowCount), randomGenerator.nextInt(board.columnCount)); return new Position(randomGenerator.nextInt(board.rowCount), randomGenerator.nextInt(board.columnCount));
} }
...@@ -55,11 +67,7 @@ public class Fire extends FireManager { ...@@ -55,11 +67,7 @@ public class Fire extends FireManager {
firePositions.remove(position); firePositions.remove(position);
} }
public Set<Position> getFirepositions(){
return firePositions;
}
@Override
public boolean containsFire(Position position) { public boolean containsFire(Position position) {
if (firePositions.contains(position)) { if (firePositions.contains(position)) {
return true; return true;
......
package newmodel; package newmodel;
import model.ModelElement;
import util.Position; import util.Position;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Random; import java.util.Random;
public class FireFighter implements Extinguisher { public class FireFighter extends Extinguisher {
private String state; private ModelElement state;
private final Fboard board; private final Fboard board;
private List<Position> firefighterPositions; private List<Position> firefighterPositions;
private final Random randomGenerator = new Random(); private final Random randomGenerator = new Random();
...@@ -27,7 +28,7 @@ public class FireFighter implements Extinguisher { ...@@ -27,7 +28,7 @@ public class FireFighter implements Extinguisher {
result.add(firefighterPosition); result.add(firefighterPosition);
result.add(newFirefighterPosition); result.add(newFirefighterPosition);
List<Position> neighborFirePositions = board.neighbors(newFirefighterPosition).stream() List<Position> neighborFirePositions = board.neighbors(newFirefighterPosition).stream()
.filter(board.getFire().getFirepositions()::contains).toList(); //this code create a list filtred with only the fire positions that are close to the newfirefighter position .filter(board.getFire().getPositions()::contains).toList(); //this code create a list filtred with only the fire positions that are close to the newfirefighter position
for(Position firePosition : neighborFirePositions) //and exist in the firepositions list also for(Position firePosition : neighborFirePositions) //and exist in the firepositions list also
extinguish(firePosition); extinguish(firePosition);
result.addAll(neighborFirePositions); result.addAll(neighborFirePositions);
...@@ -43,14 +44,19 @@ public class FireFighter implements Extinguisher { ...@@ -43,14 +44,19 @@ public class FireFighter implements Extinguisher {
public void setState() { public void setState() {
state="FireFighter"; state= ModelElement.FIREFIGHTER;
} }
public String getState() { public ModelElement getState() {
return state; return state;
} }
@Override
public int getID() {
return this.ID;
}
public void initialize() { public void initialize() {
firefighterPositions = new ArrayList<>(); firefighterPositions = new ArrayList<>();
for (int index = 0; index < initialFirefighterCount; index++) for (int index = 0; index < initialFirefighterCount; index++)
......
package newmodel;
import util.Position;
import java.util.List;
import java.util.Set;
public abstract class FireManager implements item{
public abstract List<Position> update();
public abstract void extinguish(Position position);
public abstract Set<Position> getFirepositions();
public abstract boolean containsFire(Position position);
public abstract void setState();
public abstract String getState();
}
package newmodel; package newmodel;
import model.ModelElement;
import util.Position; import util.Position;
import java.util.List; import java.util.List;
...@@ -21,10 +22,15 @@ public class MotoFireFighter extends Extinguisher { ...@@ -21,10 +22,15 @@ public class MotoFireFighter extends Extinguisher {
} }
@Override @Override
public String getState() { public ModelElement getState() {
return null; return null;
} }
@Override
public int getID() {
return 0;
}
@Override @Override
public void initialize() { public void initialize() {
......
package newmodel; package newmodel;
import model.ModelElement;
import util.Position; import util.Position;
import java.util.ArrayList; import java.util.ArrayList;
...@@ -7,7 +8,7 @@ import java.util.List; ...@@ -7,7 +8,7 @@ import java.util.List;
import java.util.Random; import java.util.Random;
public class Nuages extends Extinguisher{ public class Nuages extends Extinguisher{
private String state; private ModelElement state;
private final Fboard board; private final Fboard board;
private List<Position> nuagesPositions; private List<Position> nuagesPositions;
private final Random randomGenerator = new Random(); private final Random randomGenerator = new Random();
...@@ -42,14 +43,19 @@ public class Nuages extends Extinguisher{ ...@@ -42,14 +43,19 @@ public class Nuages extends Extinguisher{
public void setState() { public void setState() {
state="Nuage"; state=ModelElement.FIREFIGHTER;
} }
public String getState() { public ModelElement getState() {
return state; return state;
} }
@Override
public int getID() {
return 0;
}
public void initialize() { public void initialize() {
nuagesPositions = new ArrayList<>(); nuagesPositions = new ArrayList<>();
......
package newmodel; package newmodel;
import model.ModelElement;
import util.Position; import util.Position;
import java.util.List; import java.util.List;
...@@ -7,7 +8,7 @@ import java.util.Random; ...@@ -7,7 +8,7 @@ import java.util.Random;
public class Pompiers extends Extinguisher{ public class Pompiers extends Extinguisher{
private String state; private ModelElement state;
private final Fboard board; private final Fboard board;
private List<Position> Pompiers; private List<Position> Pompiers;
private final Random randomGenerator = new Random(); private final Random randomGenerator = new Random();
...@@ -26,20 +27,30 @@ public class Pompiers extends Extinguisher{ ...@@ -26,20 +27,30 @@ public class Pompiers extends Extinguisher{
} }
@Override
public List<Position> update() {
return null;
}
public void extinguish(Position position) { public void extinguish(Position position) {
} }
public void setState() { public void setState() {
this.state="Pompiers"; this.state=ModelElement.FIREFIGHTER;
} }
public String getState() { public ModelElement getState() {
return state; return state;
} }
@Override
public int getID() {
return 0;
}
public void initialize() { public void initialize() {
......
package newmodel; package newmodel;
import model.ModelElement;
import util.Position; import util.Position;
import java.util.List; import java.util.List;
...@@ -7,5 +8,9 @@ import java.util.List; ...@@ -7,5 +8,9 @@ import java.util.List;
public interface item { public interface item {
public List<Position> update(); public List<Position> update();
void setState(); void setState();
String getState(); public ModelElement getState();
public int getID();
public void initialize();
public List<Position> getPositions();
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment