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

MotorizedFireFighter.java

  • Forked from COUETOUX Basile / FirefighterStarter
    123 commits ahead of the upstream repository.
    Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    MotorizedFireFighter.java 1.44 KiB
    package model.ExtinguishFire;
    
    import model.Board.BoardElement;
    import util.Position;
    import util.TargetStrategy;
    
    import java.util.*;
    
    public class MotorizedFireFighter extends FireFighter{
        private final TargetStrategy targetStrategy = new TargetStrategy();
        public MotorizedFireFighter(Position position) {
            super(position);
        }
    
    
        @Override
        public String getType() {
            return "MotorizedFireFighter";
        }
    
        @Override
        public String toString() {
            return null;
        }
    
    
        /**
         * Déplace le pompier motorisé en deux étapes maximum vers un feu.
         *
         * @param firePositions Les positions des feux.
         * @param neighbors Les positions voisines accessibles.
         * @return La nouvelle position du pompier.
         */
        public Position move(Set<Position> firePositions, Map<Position, List<Position>> neighbors) {
            // Première étape
            Position firstStep = targetStrategy.neighborClosestToTarget(getPosition(), firePositions, neighbors);
            if (firstStep == null) {
                return getPosition(); // Aucun déplacement possible
            }
    
            // Deuxième étape
            Position secondStep = targetStrategy.neighborClosestToTarget(firstStep, firePositions, neighbors);
    
            // Mise à jour de la position
            Position newPosition = (secondStep != null) ? secondStep : firstStep;
            setPosition(newPosition); // Mettre à jour la position interne
            return newPosition;
        }
    
    
    }