Select Git revision
Forked from
COUETOUX Basile / FirefighterStarter
Source project has a limited visibility.
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
FirefighterBoard.java 14.45 KiB
package model;
import util.Position;
import javafx.util.Pair;
import java.util.*;
import static model.ModelElement.CLOUD;
public class FirefighterBoard implements Board<List<ModelElement>> {
private final int columnCount;
private final int rowCount;
private final int initialFireCount;
private final int initialFirefighterCount;
private final int initialRoadCount;
private final int initialcloudCount;
private final int initialmountainsCount;
private final int initialrocksCount;
private List<Position> firefighterPositions;
private Set<Position> firePositions;
private Set<Position> roadPositions;
private final Map<Position, List<Position>> neighbors;
private final Position[][] positions;
private List<Position> cloudPositions;
private Set<Position> moutainsPositions;
private Set<Position> rocksPositions;
private int step = 0;
// Constructor for FirefighterBoard
public FirefighterBoard(int columnCount, int rowCount, int initialFireCount, int initialFirefighterCount, int initialRoadCount, int initialcloudCount, int initialmountainsCount, int initialrocksCount) {
this.columnCount = columnCount;
this.rowCount = rowCount;
this.initialFireCount = initialFireCount;
this.initialFirefighterCount = initialFirefighterCount;
this.initialRoadCount = initialRoadCount;
this.initialcloudCount = initialcloudCount;
this.initialmountainsCount = initialmountainsCount;
this.initialrocksCount = initialrocksCount;
this.positions = new Position[rowCount][columnCount];
this.firefighterPositions = new ArrayList<>();
this.firePositions = new HashSet<>();
this.neighbors = new HashMap<>();
this.cloudPositions = new ArrayList<>();
this.moutainsPositions = new HashSet<>();
this.roadPositions = new HashSet<>();
this.rocksPositions = new HashSet<>();
initializeBoard();
}
private void initializeBoard() {
Random random = new Random();
// Initialize fire positions
for (int i = 0; i < initialFireCount; i++) {
firePositions.add(new Position(random.nextInt(rowCount), random.nextInt(columnCount)));
}
// Initialize firefighter positions
for (int i = 0; i < initialFirefighterCount; i++) {
firefighterPositions.add(new Position(random.nextInt(rowCount), random.nextInt(columnCount)));
}
// Initialize road positions
for (int i = 0; i < initialRoadCount; i++) {
roadPositions.add(new Position(random.nextInt(rowCount), random.nextInt(columnCount)));
}
// Initialize road positions
for (int i = 0; i < initialcloudCount; i++) {