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

BriansBrainState.java

Blame
  • Forked from NAVES Guyslain / Game of life Template
    Source project has a limited visibility.
    Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    Cloud.java 2.43 KiB
    package model;
    
    import javafx.geometry.Pos;
    import javafx.scene.paint.Color;
    import util.Position;
    import util.PositionUtil;
    
    import java.util.ArrayList;
    import java.util.List;
    import java.util.Random;
    
    public class Cloud implements Entity{
        private int age;
        private Position position;
        private final Color viewColor = Color.GREEN;
    
    
    
        public Cloud(Position position, Board<Square> b){
            this.age = 0;
            this.position = position;
    
        }
    
        public Cloud(Position position, Board<Square> b, int age){
            this.age = age;
            this.position = position;
    
        }
    
        @Override
        public List<Position> nextTurn(Board<Square> b) {
            List<Position> adjacentPositions = PositionUtil.generateAdjacentPositions(position, b);
    
            // Filtrer pour obtenir uniquement les positions qui ne contiennent pas de pompier
            adjacentPositions.removeIf(p -> b.doesSquareContainEntity(p, FireFighter.class));
    
            // Choisir une position aléatoire parmi les mouvements possibles
            Position next_position = adjacentPositions.get(new Random().nextInt(adjacentPositions.size()));
    
            // Si la nouvelle position contient un feu, éteindre le feu
            if (b.getStates(next_position).getEntities().stream().anyMatch(element -> element instanceof Fire) ){
                extinguish(next_position, b);
            }
    
            Position old_position = this.position;
            this.position = next_position;
            b.addEntityAtSquare(this, next_position);
            b.clearCaseFrom(this, old_position);
    
            return List.of(old_position, this.position);
        }
    
    
        private Position extinguish(Position p, Board<Square> b) {
            b.getStates(p).getEntities().removeIf(element -> element instanceof Fire);
                List<Entity> entities = b.getStates(p).getEntities();
                for (Entity e : entities) {
                    if (e instanceof EmptyEntity) {
                        e.setAge(b.stepNumber() + 1);
                    }
                }
    
            return p;
        }
    
        @Override
        public Position getPosition() {
            return this.position;
        }
    
        @Override
        public void setPosition(Position p) {
            this.position = p;
        }
    
        @Override
        public int getAge() {
            return age;
        }
    
        @Override
        public void setAge(int age) {
            this.age =age;
        }
    
        @Override
        public void incrementAge() {
            this.age += 1;
    
        }
    
        @Override
        public Color getViewColor() {
            return this.viewColor;
        }
    }