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

ajout wireworld

parent 52a69581
Branches going_further
No related tags found
No related merge requests found
...@@ -9,6 +9,8 @@ import javafx.stage.Stage; ...@@ -9,6 +9,8 @@ import javafx.stage.Stage;
import model.CellularAutomatonSimulation; import model.CellularAutomatonSimulation;
import model.automata.BiColorAutomaton; import model.automata.BiColorAutomaton;
import model.automata.SeedsAutomaton; import model.automata.SeedsAutomaton;
import model.automata.WireWorldAutomata;
import model.automata.WireWorldState;
import java.io.IOException; import java.io.IOException;
import java.net.URL; import java.net.URL;
...@@ -38,7 +40,7 @@ public class SimulatorApplication extends Application { ...@@ -38,7 +40,7 @@ public class SimulatorApplication extends Application {
public SimulatorApplication() { public SimulatorApplication() {
this.simulation = this.simulation =
new CellularAutomatonSimulation<>( new CellularAutomatonSimulation<>(
new BiColorAutomaton(NUMBER_OF_COLUMNS,NUMBER_OF_ROWS), new WireWorldAutomata(NUMBER_OF_COLUMNS,NUMBER_OF_ROWS),
GENERATOR GENERATOR
); );
} }
......
package model.automata;
import model.CellularAutomaton;
import java.util.Random;
public class WireWorldAutomata implements CellularAutomaton<WireWorldState> {
private final int numberOfColumns;
private final int numberOfRows;
public WireWorldAutomata(int numberOfColumns, int numberOfRows) {
this.numberOfColumns = numberOfColumns;
this.numberOfRows = numberOfRows;
}
@Override
public int numberOfColumns() {
return this.numberOfColumns;
}
@Override
public int numberOfRows() {
return this.numberOfRows;
}
@Override
public WireWorldState defaultState() {
return WireWorldState.DEAD;
}
@Override
public WireWorldState randomState(Random generator) {
int r = generator.nextInt(18);
return r < 5 ? WireWorldState.CONDUCTOR:
r == 5 ? WireWorldState.HEAD:
WireWorldState.DEAD;
}
}
package model.automata;
import javafx.scene.paint.Color;
import model.State;
import java.util.List;
public enum WireWorldState implements State<WireWorldState> {
DEAD, CONDUCTOR, HEAD, TAIL;
@Override
public Color getColor() {
return switch (this) {
case DEAD -> Color.BLACK;
case CONDUCTOR -> Color.GOLD;
case HEAD -> Color.BLUE;
case TAIL -> Color.RED;
};
}
@Override
public WireWorldState next() {
return switch (this) {
case DEAD -> CONDUCTOR;
case CONDUCTOR -> HEAD;
case HEAD -> TAIL;
case TAIL -> DEAD;
};
}
@Override
public WireWorldState update(List<WireWorldState> neighbours) {
return switch (this) {
case DEAD -> DEAD;
case CONDUCTOR -> {
int heads = State.count(HEAD,neighbours);
yield heads == 1 || heads == 2 ? HEAD: CONDUCTOR;
}
case HEAD -> TAIL;
case TAIL -> CONDUCTOR;
};
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment