Select Git revision
module-info.java
Forked from
NAVES Guyslain / sort-template
Source project has a limited visibility.
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
FireFighterScenario.java 1.86 KiB
package model;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import util.Matrix;
import util.Position;
public class FireFighterScenario implements Board<Entity>{
private Matrix<Entity> matrix;
private int step;
public FireFighterScenario(int boardSize){
this.matrix = new Matrix<Entity>();
this.step = 0;
}
public Entity getState(Position position){
if(position.x() > matrix.size() || position.y() > matrix.size()){
throw new IllegalArgumentException("The position x:" + position.x() + " y:" + position.y() + " is out of the board.");
}
return matrix.get(position.x(), position.y());
}
public void setState(Entity state, Position position){
if(!(getState(position) instanceof EmptySquare)){
return;
}
matrix.set(position.x(), position.y(), state);
}
// Le booléen replaceState permet de forcer le remplacement des cases vides
public void setState(Entity state, Position position, boolean replaceStates){
if(!(getState(position) instanceof EmptySquare) && !replaceStates){
return;
}
matrix.set(position.x(), position.y(), state);
}
public int rowCount(){
return matrix.size();
}
public int columnCount(){
return matrix.size(); // On considère que la matrice est toujours une matrice carré
}
public List<Position> updateToNextGeneration() {
ArrayList<Position> changedPositions = new ArrayList<>();
Iterator<Entity> iterator = matrix.iterator();
while (iterator.hasNext()) {
Entity e = iterator.next();
Position p = new Position(e.getPosition().x(), e.getPosition().y());
e.nextTurn(this);
if (!e.getPosition().equals(p)) {
changedPositions.add(p);
}
}
return changedPositions;
}
public void reset(){
matrix.clear();
}
public int stepNumber(){
return this.step;
}
}