Skip to content
Snippets Groups Projects
WireWorldState.java 1.03 KiB
Newer Older
  • Learn to ignore specific revisions
  • Guyslain's avatar
    Guyslain committed
    package model.automata;
    
    import javafx.scene.paint.Color;
    import model.State;
    
    import java.util.List;
    
    public enum WireWorldState implements State<WireWorldState> {
        DEAD, WIRE, BLUE, RED;
    
    
        @Override
        public Color getColor() {
            return switch (this) {
                case DEAD -> Color.BLACK;
                case WIRE -> Color.GOLD;
                case BLUE -> Color.BLUE;
                case RED -> Color.RED;
            };
        }
    
        @Override
        public WireWorldState cycle() {
            return switch (this) {
                case DEAD -> WIRE;
                case WIRE -> BLUE;
                case BLUE -> RED;
                case RED -> DEAD;
            };
        }
    
        @Override
        public WireWorldState update(List<WireWorldState> neighbours) {
            return switch (this) {
                case DEAD -> DEAD;
                case WIRE -> {
                    int countBlues = State.count(BLUE, neighbours);
                    yield (countBlues == 1 || countBlues == 2)? BLUE: WIRE;
                }
                case BLUE -> RED;
                case RED -> WIRE;
            };
        }
    }