Skip to content
Snippets Groups Projects
Commit 53447461 authored by Guyslain's avatar Guyslain
Browse files

Ajout Wireworld

parent 982f8a82
No related tags found
No related merge requests found
......@@ -8,6 +8,7 @@ import javafx.scene.Scene;
import javafx.stage.Stage;
import model.CellularAutomatonSimulation;
import model.automata.GameOfLifeAutomaton;
import model.automata.WireWorldAutomaton;
import java.io.IOException;
import java.net.URL;
......@@ -37,7 +38,7 @@ public class SimulatorApplication extends Application {
public SimulatorApplication() {
this.simulation =
new CellularAutomatonSimulation<>(
new GameOfLifeAutomaton(NUMBER_OF_COLUMNS,NUMBER_OF_ROWS),
new WireWorldAutomaton(NUMBER_OF_COLUMNS,NUMBER_OF_ROWS),
GENERATOR
);
}
......
package model.automata;
import model.CellularAutomaton;
import java.util.Random;
import static model.automata.WireWorldState.WIRE;
public class WireWorldAutomaton implements CellularAutomaton<WireWorldState> {
private final int numberOfColumns;
private final int numberOfRows;
public WireWorldAutomaton(int numberOfColumns, int numberOfRows) {
this.numberOfColumns = numberOfColumns;
this.numberOfRows = numberOfRows;
}
@Override
public int numberOfColumns() {
return numberOfColumns;
}
@Override
public int numberOfRows() {
return numberOfRows;
}
@Override
public WireWorldState defaultState() {
return WireWorldState.DEAD;
}
@Override
public WireWorldState randomState(Random generator) {
int r = generator.nextInt(10);
return r < 3 ? WireWorldState.WIRE: WireWorldState.DEAD;
}
}
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;
};
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment