Select Git revision
BookException.java
Forked from
NAVES Guyslain / ProgAvExercices
Source project has a limited visibility.
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
FFBoard.java 2.54 KiB
package model;
import util.Position;
import util.TargetStrategy;
import java.lang.reflect.InvocationTargetException;
import java.util.*;
public class FFBoard implements Board<List<ModelElement>> {
private final int columnCount;
private final int rowCount;
private final int initialFireCount;
private final int initialFirefighterCount;
private BoardData boardData;
private FFUpdater FFUpdater ;
private final Random randomGenerator = new Random();
public FFBoard(int columnCount, int rowCount, int initialFireCount, int initialFirefighterCount) {
boardData=new FFBoardData(columnCount,rowCount);
FFUpdater=new FFUpdater();
this.columnCount = columnCount;
this.rowCount = rowCount;
this.initialFireCount = initialFireCount;
this.initialFirefighterCount = initialFirefighterCount;
initializeElements();
}
public void initializeElements() {
boardData.initialize();
FFUpdater= new FFUpdater();
for (int index = 0; index < initialFireCount; index++)
boardData.addElement(new StandardFire(randomPosition()));
for (int index = 0; index < initialFirefighterCount; index++)
boardData.addElement(new StandardFireFighter(randomPosition()));
for (int index = 0; index < 2; index++)
boardData.addElement(new MotorizedFireFighter(randomPosition()));
for (int index = 0; index < 10; index++)
boardData.addElement(new Cloud(randomPosition()));
for (int index = 0; index < 50; index++)
boardData.addElement(new Road(randomPosition()));
}
private Position randomPosition() {
return new Position(randomGenerator.nextInt(rowCount), randomGenerator.nextInt(columnCount));
}
@Override
public List<ModelElement> getState(Position position) {
List<ModelElement> result=new ArrayList<>();
for (Element e:boardData.getCell(position).Content) {
result.add(e.getType());
}
return result;
}
@Override
public int rowCount() {
return rowCount;
}
@Override
public int columnCount() {
return columnCount;
}
public List<Position> updateToNextGeneration() {
List<Position> modifiedPositions = FFUpdater.updateAll(boardData);