Select Git revision
BriansBrainState.java
Forked from
NAVES Guyslain / Game of life Template
8 commits behind the upstream repository.
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
BriansBrainState.java 1.30 KiB
package model.states;
import javafx.scene.paint.Color;
import model.State;
import java.util.List;
import java.util.Random;
public enum BriansBrainState implements State<BriansBrainState> {
ON, OFF, DYING;
@Override
public Color getColor() {
return switch (this) {
case ON -> Color.WHITE;
case OFF -> Color.BLACK;
case DYING -> Color.BLUE;
};
}
@Override
public BriansBrainState next() {
return switch (this) {
case ON -> DYING;
case OFF -> ON;
case DYING -> OFF;
};
}
@Override
public BriansBrainState update(List<State<BriansBrainState>> neighbours) {
return switch (this) {
case ON -> DYING;
case DYING -> OFF;
case OFF -> {
int count = countList(ON, neighbours);
yield count==2 ? ON : OFF;
}
};
}
static <T> int countList(T value, List<T> elements) {
int count = 0;
for (T v : elements) {
if (v.equals(value)) {
count++;
}
}
return count;
}
final static Random GENERATOR = new Random();
public static BriansBrainState random() {
return GENERATOR.nextInt(10) == 0 ? ON: OFF;
}
}