Skip to content
Snippets Groups Projects
Select Git revision
  • 6d57abb9d805de4313122d0eb4d8e33340026b87
  • main default protected
  • variant
3 results

Fboard.class

Blame
  • Forked from LABOUREL Arnaud / Firefighter template
    Source project has a limited visibility.
    Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    FirefighterBoard.java 14.45 KiB
    package model;
    
    import util.Position;
    import javafx.util.Pair;
    import java.util.*;
    
    import static model.ModelElement.CLOUD;
    
    public class FirefighterBoard implements Board<List<ModelElement>> {
        private final int columnCount;
        private final int rowCount;
        private final int initialFireCount;
        private final int initialFirefighterCount;
        private final int initialRoadCount;
        private final int initialcloudCount;
        private final int initialmountainsCount;
        private final int initialrocksCount;
    
        private List<Position> firefighterPositions;
        private Set<Position> firePositions;
        private Set<Position> roadPositions;
        private final Map<Position, List<Position>> neighbors;
        private final Position[][] positions;
        private List<Position> cloudPositions;
        private Set<Position> moutainsPositions;
        private Set<Position> rocksPositions;
    
        private int step = 0;
    
        // Constructor for FirefighterBoard
        public FirefighterBoard(int columnCount, int rowCount, int initialFireCount, int initialFirefighterCount, int initialRoadCount, int initialcloudCount, int initialmountainsCount, int initialrocksCount) {
            this.columnCount = columnCount;
            this.rowCount = rowCount;
            this.initialFireCount = initialFireCount;
            this.initialFirefighterCount = initialFirefighterCount;
            this.initialRoadCount = initialRoadCount;
            this.initialcloudCount = initialcloudCount;
            this.initialmountainsCount = initialmountainsCount;
            this.initialrocksCount = initialrocksCount;
    
            this.positions = new Position[rowCount][columnCount];
            this.firefighterPositions = new ArrayList<>();
            this.firePositions = new HashSet<>();
            this.neighbors = new HashMap<>();
            this.cloudPositions = new ArrayList<>();
            this.moutainsPositions = new HashSet<>();
            this.roadPositions = new HashSet<>();
            this.rocksPositions = new HashSet<>();
    
            initializeBoard();
        }
    
        private void initializeBoard() {
            Random random = new Random();
    
            // Initialize fire positions
            for (int i = 0; i < initialFireCount; i++) {
                firePositions.add(new Position(random.nextInt(rowCount), random.nextInt(columnCount)));
            }
    
            // Initialize firefighter positions
            for (int i = 0; i < initialFirefighterCount; i++) {
                firefighterPositions.add(new Position(random.nextInt(rowCount), random.nextInt(columnCount)));
            }
            // Initialize road positions
            for (int i = 0; i < initialRoadCount; i++) {
                roadPositions.add(new Position(random.nextInt(rowCount), random.nextInt(columnCount)));
            }
            // Initialize road positions
            for (int i = 0; i < initialcloudCount; i++) {