Skip to content
Snippets Groups Projects
Commit c77cbe67 authored by KALLEL Mohamed ali's avatar KALLEL Mohamed ali
Browse files

task 1

parent 45a4dc2b
No related branches found
No related tags found
No related merge requests found
Pipeline #24770 failed
...@@ -13,42 +13,23 @@ import static util.Tools.addElement; ...@@ -13,42 +13,23 @@ import static util.Tools.addElement;
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 List<Position> firefighterPositions;
private Set<Position> firePositions;
private Map<Position,List<ModelElement>>board; private Map<Position,List<ModelElement>>board;
private Map<ModelElement,Integer>intialboard;
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) { public FirefighterBoard(int columnCount, int rowCount, Map<ModelElement,Integer>intialboard) {
this.columnCount = columnCount; this.columnCount = columnCount;
this.rowCount = rowCount; this.rowCount = rowCount;
this.initialFireCount = initialFireCount;
this.initialFirefighterCount = initialFirefighterCount;
board=new HashMap<>(); board=new HashMap<>();
initializeElements(); initializeElements(new Fire);
}
public void initializeElements() {
firefighterPositions = new ArrayList<>();
firePositions = new HashSet<>();
for (int index = 0; index < initialFireCount; index++)
firePositions.add(randomPosition());
for (int index = 0; index < initialFirefighterCount; index++)
firefighterPositions.add(randomPosition());
for (Position firefighterPosition:firefighterPositions
) {
addElement(firefighterPosition, board, new FireFigther());
}
for (Position firePosition:firePositions
) {
addElement(firePosition, board, new Fire());
} }
public void initializeElements(ModelElement modelElement) {
for (int index = 0; index < intialboard.get(modelElement); index++)
addElement(randomPosition(),board,modelElement);
} }
private Position randomPosition() { private Position randomPosition() {
......
...@@ -20,12 +20,14 @@ public class Tools { ...@@ -20,12 +20,14 @@ public class Tools {
Set<Position> seen = new HashSet<>(); Set<Position> seen = new HashSet<>();
HashMap<Position, Position> firstMove = new HashMap<>(); HashMap<Position, Position> firstMove = new HashMap<>();
Queue<Position> toVisit = new LinkedList<>(neighbors(position,rowCount,columnCount)); Queue<Position> toVisit = new LinkedList<>(neighbors(position,rowCount,columnCount));
for (Position initialMove : toVisit) for (Position initialMove : toVisit){
firstMove.put(initialMove, initialMove); firstMove.put(initialMove, initialMove);
}
while (!toVisit.isEmpty()) { while (!toVisit.isEmpty()) {
Position current = toVisit.poll(); Position current = toVisit.poll();
if (board.containsKey(current)) { if (board.containsKey(current)) {
if (board.get(current).contains(new Fire())){ if (board.get(current).contains(new Fire())){
System.out.println("ok chef 4");
return firstMove.get(current); return firstMove.get(current);
} }
for (Position adjacent : neighbors(current, rowCount, columnCount)) { for (Position adjacent : neighbors(current, rowCount, columnCount)) {
...@@ -34,6 +36,7 @@ public class Tools { ...@@ -34,6 +36,7 @@ public class Tools {
} }
toVisit.add(adjacent); toVisit.add(adjacent);
seen.add(adjacent); seen.add(adjacent);
HashMap<Position, Position> firstMove = new HashMap
firstMove.put(adjacent, firstMove.get(current)); firstMove.put(adjacent, firstMove.get(current));
} }
...@@ -63,4 +66,5 @@ public class Tools { ...@@ -63,4 +66,5 @@ public class Tools {
board.put(position,elements); board.put(position,elements);
} }
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment