Skip to content
Snippets Groups Projects
GameOfLifeState.java 1004 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;
    
    SAHIN Melis damla's avatar
    TP  
    SAHIN Melis damla committed
    import java.util.Random;
    
    Guyslain's avatar
    Guyslain committed
    
    /**
     * {@link GameOfLifeState} instances represent the possible states of a {@link GameOfLifeState}.
     */
    public enum GameOfLifeState implements State<GameOfLifeState> {
    
    Guyslain's avatar
    Guyslain committed
        ALIVE, DEAD;
    
    Guyslain's avatar
    Guyslain committed
    
        @Override
        public Color getColor() {
    
    SAHIN Melis damla's avatar
    TP  
    SAHIN Melis damla committed
            return this == ALIVE ? Color.RED : Color.WHITE;
    
    Guyslain's avatar
    Guyslain committed
        }
    
        @Override
        public GameOfLifeState next() {
    
    SAHIN Melis damla's avatar
    TP  
    SAHIN Melis damla committed
            return this == ALIVE ? DEAD : ALIVE;
    
    Guyslain's avatar
    Guyslain committed
        }
    
        @Override
    
    SAHIN Melis damla's avatar
    TP  
    SAHIN Melis damla committed
        public GameOfLifeState update(List<GameOfLifeState> neighbors) {
            int aliveCount = State.count(ALIVE, neighbors);
    
            if (this == ALIVE) {
                return (aliveCount == 2 || aliveCount == 3) ? ALIVE : DEAD;
            } else {
                return (aliveCount == 3) ? ALIVE : DEAD;
    
    Guyslain's avatar
    Guyslain committed
        }
    
    SAHIN Melis damla's avatar
    TP  
    SAHIN Melis damla committed
        public GameOfLifeState randomState(Random generator) {
            return generator.nextBoolean() ? GameOfLifeState.ALIVE : GameOfLifeState.DEAD;
        }
    }