Skip to content
Snippets Groups Projects
Select Git revision
  • f44210442c6a82f2ecc46cba11ee21fa9fe1bb80
  • main default protected
2 results

module-info.java

Blame
  • 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;
      }
    }