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

Cloud.java

Blame
  • Forked from COUETOUX Basile / FirefighterStarter
    13 commits ahead of the upstream repository.
    user avatar
    ousseyn01 authored
    6d06aa77
    History
    Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    Cloud.java 1.27 KiB
    package model;
    
    import util.Position;
    
    import java.util.*;
    import java.util.Map;
    
    public class Cloud {
        private Position position;
        private final Map<Position, List<Position>> neighbors;
        private final Random randomGenerator = new Random();
    
        public Cloud(Position startPosition, Map<Position, List<Position>> neighbors) {
            this.position = startPosition;
            this.neighbors = neighbors;
        }
    
        public void moveAndExtinguishFire(Fire fire) {
            Position newPosition = moveToNewPosition();
            this.position = newPosition;
    
            extinguishNeighboringFires(fire);
        }
    
        private Position moveToNewPosition() {
            List<Position> neighborsList = neighbors.get(position);
            return neighborsList.get((int) (Math.random() * neighborsList.size()));
        }
    
        private void extinguishNeighboringFires(Fire fire) {
            List<Position> neighboringPositions = neighbors.get(position);
            for (Position neighbor : neighboringPositions) {
                if (fire.getFirePositions().contains(neighbor)) {
                    fire.extinguishFire(neighbor);
                }
            }
        }
    
        public Position getPosition() {
            return position;
        }
    
        public void extinguishFireCloud(Fire fire) {
                fire.getFirePositions().remove(position);
        }
    }