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

GameOfLifeState.java

  • Forked from LABOUREL Arnaud / Game of life Template
    Source project has a limited visibility.
    Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    MotorizedFireFighter.java 1.69 KiB
    package model.Extinguisher;
    
    import model.Board;
    
    import model.ModelElement;
    import model.Obstacle.Mountain;
    import model.Obstacle.Obstacle;
    import util.Neighbour;
    import util.Position;
    
    import java.util.ArrayList;
    import java.util.List;
    
    public class MotorizedFireFighter extends Extinguisher {
    
        public MotorizedFireFighter(Position position) {
            super(position);
            this.element = ModelElement.MOTORIZEDFIREFIGHTER;
        }
    
        @Override
        public List<Position> update(Board<List<ModelElement>> firefighterBoard) {
            this.neighbour = new Neighbour(firefighterBoard);
    
            List<Position> modifiedPositions = new ArrayList<>();
    
            Position currentPosition = this.getPosition();
            Position newPosition = targetStrategy.neighborClosestToFire(currentPosition, firefighterBoard.getFires().keySet(), this.neighbour.getNeighbors());
            Position DoublenewPosition = targetStrategy.neighborClosestToFire(newPosition, firefighterBoard.getFires().keySet(), this.neighbour.getNeighbors());
            this.setPosition(DoublenewPosition);
    
            modifiedPositions.add(currentPosition);
    
            modifiedPositions.add(DoublenewPosition);
    
            extinguish(firefighterBoard, newPosition);
            extinguish(firefighterBoard, DoublenewPosition);
    
    
            for (Position neighbor : this.neighbour.getNeighbors().get(DoublenewPosition)) {
                extinguish(firefighterBoard, neighbor);
                modifiedPositions.add(neighbor);
            }
    
            for (Obstacle obstacle : firefighterBoard.getObstacles().values()) {
                if (obstacle instanceof Mountain) {
                    modifiedPositions.remove(obstacle.getPosition());
                }
            }
    
            return modifiedPositions;
    
        }
    }