Skip to content
Snippets Groups Projects
GameOfLifeState.java 1.56 KiB
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> {
    
    Guyslain's avatar
    Guyslain committed
        ALIVE, DEAD;
    
    Guyslain's avatar
    Guyslain committed
    
    
        @Override
        public Color getColor() {
    
            switch (this) {
    
                case ALIVE:
                    return Color.RED;
    
                case DEAD:
                    return Color.WHITE;
                default:
    
                    return Color.WHITE;
            }
    
    Guyslain's avatar
    Guyslain committed
        }
    
    
        /* correction avec if :
        if this.equals(ALIVE) {
            return COLOR.RED;
        else {
            return COLOR.WHITE;
        */
    
    
    Guyslain's avatar
    Guyslain committed
        @Override
        public GameOfLifeState next() {
    
            switch (this) {
                case ALIVE:
                    return DEAD;
                case DEAD:
                    return ALIVE;
    
                default:
                    return DEAD;
    
    Guyslain's avatar
    Guyslain committed
        }
    
        /* correction avec if :
            if this.equals(ALIVE) {
                return DEAD;
            else {
                return ALIVE;
            */
    
    Guyslain's avatar
    Guyslain committed
    
        @Override
    
        public GameOfLifeState update(List<GameOfLifeState> neighbours) {
    
            int count = State.count(ALIVE, neighbours);
            switch (this) {
                case DEAD:
                    if (count == 3) {
                        return ALIVE;
                    }
    
                case ALIVE:
                    if (count == 3) {
                        return ALIVE;
                    } else if (count == 2) {
                        return ALIVE;
                    }
    
    Guyslain's avatar
    Guyslain committed
        }
    }