Skip to content
Snippets Groups Projects
Select Git revision
  • 92be2984190bb2802832f8d2b4c22ed125163b72
  • master default
2 results

Movable.java

Blame
  • Forked from LABOUREL Arnaud / Game engine template
    Source project has a limited visibility.
    Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    FFBoard.java 2.27 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();
        FFboardFiller filler=new FFboardFiller();
        filler.fillBoard(boardData,new int[]{
                5,//firefighter
                2,//motorized firefighter
                2,//clouds
                30,//mountains
                10,//roads
                20,//forests
                10,//fires
                10//rocks
        });
      }
    
      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);
        boardData.setStep(boardData.getStep()+1);
        return modifiedPositions;
      }
      @Override
      public int stepNumber() {
        return boardData.getStep();
      }
      @Override
      public void reset() {
        initializeElements();
      }
      @Override
      public void setState(List<ModelElement> state, Position position) {
        for (ModelElement modelElement: state) {
            boardData.addElement(modelElement.instanciate(position));
        }
      }
    }