Skip to content
Snippets Groups Projects
Select Git revision
  • d796df6f068e1806ec37bddcaeabdbfe698417f6
  • main default protected
  • correction_video
  • going_further
  • ImprovedMouseInteraction
  • final2023
  • template
  • ModifGUI
8 results

CellularAutomatonSimulationTest.java

Blame
  • Forked from YAGOUBI Rim / Game of life Template
    Source project has a limited visibility.
    Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    FirefighterBoard.java 2.23 KiB
    package model;
    
    import util.Position;
    
    import java.util.*;
    
    
    public class FirefighterBoard implements Board<List<ModelElement>> {
      private final int columnCount;
      private final int rowCount;
      private final int initialFireCount;
      private final int initialFirefighterCount;
    
      private Fires fires;
      private FireFighters fireFighters;
    
      private int step = 0;
    
      public FirefighterBoard(int columnCount, int rowCount, int initialFireCount, int initialFirefighterCount) {
        this.columnCount = columnCount;
        this.rowCount = rowCount;
        this.initialFireCount = initialFireCount;
        this.initialFirefighterCount = initialFirefighterCount;
        initializeElements();
      }
    
      public void initializeElements() {
        this.fires = new Fires();
        this.fireFighters = new FireFighters();
        fires.initializeElements(initialFireCount,rowCount,columnCount);
        fireFighters.initializeElements(initialFirefighterCount,rowCount,columnCount);
    
      }
    
      @Override
      public List<ModelElement> getState(Position position) {
        List<ModelElement> result = new ArrayList<>();
        for(Position firefighterPosition : fireFighters.getFireFightersPositions())
          if (firefighterPosition.equals(position))
            result.add(new FireFighters());
        if(fires.getFirePositions().contains(position))
          result.add(new Fires());
        return result;
      }
    
      @Override
      public int rowCount() {
        return rowCount;
      }
    
      @Override
      public int columnCount() {
        return columnCount;
      }
    
      public List<Position> updateToNextGeneration() {
        List<Position> result = fireFighters.updateFirefighters(fires.getFirePositions());
        result.addAll(fires.updateFires());
        //step ++;
        fires.incrementStep();
        return result;
      }
    
      @Override
      public int stepNumber() {
        return step;
      }
    
    
      @Override
      public void reset() {
        step = 0;
        initializeElements();
      }
    
      @Override
      public void setState(List<ModelElement> state, Position position) {
        fires.extinguish(position);
        for (;;) {
          if (!fireFighters.getFireFightersPositions().remove(position)) break;
        }
    
        for(ModelElement element : state){
          if (element instanceof Fires){
            fires.add(position);
          }
          if (element instanceof FireFighters){
            fireFighters.add(position);
          }
        }
    
      }
    }