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

cbc

parent c2c141be
No related branches found
No related tags found
No related merge requests found
Pipeline #24786 failed
......@@ -151,11 +151,10 @@ public class Controller {
int rowCount, int initialFireCount, int initialFirefighterCount) {
grid.setDimensions(columnCount, rowCount, squareWidth, squareHeight);
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 Fire(initialFireCount));
list.add(new FireFighter(initialFirefighterCount,b));
b.setItems(list);
Fboard b=new Fboard(columnCount,rowCount,items);
this.setModel(b);
repaintGrid();
}
......
......@@ -7,28 +7,27 @@ import java.util.*;
public class Fboard {
protected final int columnCount;
protected final int rowCount;
protected static int columnCount;
protected static int rowCount;
private int step = 0;
private List<item> items;
public Fboard(int columnCount, int rowCount) {
this.columnCount = columnCount;
this.rowCount = rowCount;
public Fboard(int columnCount, int rowCount,List<item> item) {
this.items=item;
Fboard.columnCount = columnCount;
Fboard.rowCount = rowCount;
}
public int rowCount() {
return rowCount;
}
public void setItems(List<item> s){
this.items=s;
}
public int columnCount() {
return columnCount;
}
// Visitor for ID can be added
public List<Position> updateToNextGeneration() {
List<Position> result = new ArrayList<>();
for(item item : items){
......@@ -84,7 +83,7 @@ public class Fboard {
}
return x;
}
public List<Position> neighbors(Position position) {
public static 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));
......@@ -93,7 +92,7 @@ public class Fboard {
return list;
}
public Position neighborClosestToFire(Position position) {
public static Position neighborClosestToFire(Position position) {
Set<Position> seen = new HashSet<>();
HashMap<Position, Position> firstMove = new HashMap<>();
Queue<Position> toVisit = new LinkedList<>(neighbors(position)); //Queue is initialised with the neighbors of position
......@@ -101,7 +100,7 @@ public class Fboard {
firstMove.put(initialMove, initialMove);
while (!toVisit.isEmpty()) {
Position current = toVisit.poll();
if (this.getFire().getPositions().contains(current))
if (getFire().getPositions().contains(current))
return firstMove.get(current);
for (Position adjacent : neighbors(current)) {
if (seen.contains(adjacent)) continue;
......
......@@ -13,12 +13,10 @@ public class Fire implements item{
private ModelElement state;
private final Random randomGenerator = new Random();
private final Fboard board;
private final int ID=0;
public Fire(int initialFireCount,Fboard b) {
this.initialFireCount = initialFireCount;
this.board=b;
public Fire(int initialFireCount) {
this.initialFireCount = initialFireCount;this.state=ModelElement.FIRE;
}
......@@ -26,7 +24,7 @@ public class Fire implements item{
List<Position> result = new ArrayList<>();
List<Position> newFirePositions = new ArrayList<>();
for (Position fire : firePositions) {
newFirePositions.addAll(board.neighbors(fire));
newFirePositions.addAll(Fboard.neighbors(fire));
}
firePositions.addAll(newFirePositions);
result.addAll(newFirePositions);
......@@ -35,11 +33,6 @@ public class Fire implements item{
}
public void setState() {
state=ModelElement.FIRE;
}
public ModelElement getState() {
return state;
}
......@@ -60,7 +53,7 @@ public class Fire implements item{
}
public Position randomPosition() {
return new Position(randomGenerator.nextInt(board.rowCount), randomGenerator.nextInt(board.columnCount));
return new Position(randomGenerator.nextInt(Fboard.rowCount), randomGenerator.nextInt(Fboard.columnCount));
}
public void extinguish(Position position) {
......
......@@ -7,13 +7,11 @@ import java.util.Random;
public class FireFighter extends Extinguisher {
private ModelElement state;
private final Fboard board;
private List<Position> firefighterPositions;
private final Random randomGenerator = new Random();
private final int initialFirefighterCount;
public FireFighter(int initialFirefighterCount,Fboard b){
this.board=b;
public FireFighter(int initialFirefighterCount){
this.initialFirefighterCount=initialFirefighterCount;
}
......@@ -22,12 +20,12 @@ public class FireFighter extends Extinguisher {
List<Position> result = new ArrayList<>();
List<Position> firefighterNewPositions = new ArrayList<>();
for (Position firefighterPosition : firefighterPositions) {
Position newFirefighterPosition = board.neighborClosestToFire(firefighterPosition);
Position newFirefighterPosition = Fboard.neighborClosestToFire(firefighterPosition);
firefighterNewPositions.add(newFirefighterPosition);
extinguish(newFirefighterPosition);
result.add(firefighterPosition);
result.add(newFirefighterPosition);
List<Position> neighborFirePositions = board.neighbors(newFirefighterPosition).stream()
List<Position> neighborFirePositions = Fboard.neighbors(newFirefighterPosition).stream()
.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
extinguish(firePosition);
......@@ -63,7 +61,7 @@ public class FireFighter extends Extinguisher {
firefighterPositions.add(randomPosition());
}
private Position randomPosition() {
return new Position(randomGenerator.nextInt(board.rowCount), randomGenerator.nextInt(board.columnCount));
return new Position(randomGenerator.nextInt(Fboard.rowCount), randomGenerator.nextInt(Fboard.columnCount));
}
public List<Position> getPositions(){
......@@ -72,3 +70,4 @@ public class FireFighter extends Extinguisher {
}
......@@ -7,7 +7,6 @@ import java.util.List;
public interface item {
public List<Position> update();
void setState();
public ModelElement getState();
public int getID();
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment