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

BriansBrainState.java

  • Forked from NAVES Guyslain / Game of life Template
    8 commits behind the upstream repository.
    user avatar
    Guyslain authored
    a152b729
    History
    Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    BriansBrainState.java 1.30 KiB
    package model.states;
    
    import javafx.scene.paint.Color;
    import model.State;
    
    import java.util.List;
    import java.util.Random;
    
    public enum BriansBrainState implements State<BriansBrainState> {
        ON, OFF, DYING;
    
        @Override
        public Color getColor() {
            return switch (this) {
                case ON -> Color.WHITE;
                case OFF -> Color.BLACK;
                case DYING -> Color.BLUE;
            };
        }
    
        @Override
        public BriansBrainState next() {
            return switch (this) {
                case ON -> DYING;
                case OFF -> ON;
                case DYING -> OFF;
            };
        }
    
        @Override
        public BriansBrainState update(List<State<BriansBrainState>> neighbours) {
            return switch (this) {
                case ON -> DYING;
                case DYING -> OFF;
                case OFF -> {
                    int count = countList(ON, neighbours);
                    yield count==2 ? ON : OFF;
                }
            };
        }
    
        static <T>  int countList(T value, List<T> elements) {
            int count = 0;
            for (T v : elements) {
                if (v.equals(value)) {
                    count++;
                }
            }
            return count;
        }
    
        final static Random GENERATOR = new Random();
    
        public static BriansBrainState random() {
            return GENERATOR.nextInt(10) == 0 ? ON: OFF;
        }
    }