Skip to content
Snippets Groups Projects
Select Git revision
  • main default protected
  • correction_video
  • going_further
  • ImprovedMouseInteraction
  • final2023
  • template
  • ModifGUI
7 results

WireWorldState.java

Blame
  • Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    WireWorldState.java 1.03 KiB
    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;
            };
        }
    }