Skip to content
Snippets Groups Projects
GameOfLifeState.java 882 B
Newer Older
  • Learn to ignore specific revisions
  • Guyslain's avatar
    Guyslain committed
    package model.automata;
    
    Guyslain's avatar
    Guyslain committed
    
    import javafx.scene.paint.Color;
    
    import model.State;
    
    Guyslain's avatar
    Guyslain committed
    
    import java.util.List;
    
    /**
     * {@link GameOfLifeState} instances represent the possible states of a {@link GameOfLifeState}.
     */
    public enum GameOfLifeState implements State<GameOfLifeState> {
        ALIVE(Color.RED),
        DEAD(Color.WHITE);
    
        public final Color color;
    
        GameOfLifeState(Color color) {
            this.color = color;
        }
    
        @Override
        public Color getColor() {
            return this.color;
        }
    
        @Override
        public GameOfLifeState next() {
            return GameOfLifeState.values()[1 - this.ordinal()];
        }
    
        @Override
    
        public GameOfLifeState update(List<GameOfLifeState> neighbours) {
    
            int countAlive = State.count(ALIVE, neighbours);
    
            return (countAlive == 3 || this == ALIVE && countAlive == 2)?
                     ALIVE:
                     DEAD;
    
    Guyslain's avatar
    Guyslain committed
        }
    
    }