package model.automata; import javafx.scene.paint.Color; import model.State; 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; } }