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

Ajout Wireworld

parent 982f8a82
No related branches found
No related tags found
No related merge requests found
...@@ -8,6 +8,7 @@ import javafx.scene.Scene; ...@@ -8,6 +8,7 @@ import javafx.scene.Scene;
import javafx.stage.Stage; import javafx.stage.Stage;
import model.CellularAutomatonSimulation; import model.CellularAutomatonSimulation;
import model.automata.GameOfLifeAutomaton; import model.automata.GameOfLifeAutomaton;
import model.automata.WireWorldAutomaton;
import java.io.IOException; import java.io.IOException;
import java.net.URL; import java.net.URL;
...@@ -37,7 +38,7 @@ public class SimulatorApplication extends Application { ...@@ -37,7 +38,7 @@ public class SimulatorApplication extends Application {
public SimulatorApplication() { public SimulatorApplication() {
this.simulation = this.simulation =
new CellularAutomatonSimulation<>( new CellularAutomatonSimulation<>(
new GameOfLifeAutomaton(NUMBER_OF_COLUMNS,NUMBER_OF_ROWS), new WireWorldAutomaton(NUMBER_OF_COLUMNS,NUMBER_OF_ROWS),
GENERATOR 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