|
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- package edu.stuy.goldfish;
-
- import java.util.Random;
-
- import edu.stuy.goldfish.rules.*;
-
- public class Goldfish {
- private static final String[] RULES = {"Conway", "Conway4", "Life Without Death", "Brian's Brain"};
-
- private Grid _grid;
- private Render _render;
-
- private Random random = new Random();
-
- public Goldfish() {
- int width = 128;
- int height = 128;
- _grid = new Grid(width, height);
- _render = new Render(width, height, _grid, RULES);
- }
-
- public void run() {
- setup(_render.rule);
- while (true) {
- if (_render.reset) {
- setup(_render.rule);
- _render.reset = false;
- }
- if (!_render.paused) {
- String rule = _render.rule;
- if (rule.equals("Conway"))
- _grid = Conway.run(_grid);
- else if (rule.equals("Conway4"))
- _grid = Conway4.run(_grid);
- else if (rule.equals("Life Without Death"))
- _grid = LifeWithoutDeath.run(_grid);
- else if (rule.equals("Brian's Brain"))
- _grid = BriansBrain.run(_grid);
- }
- _render.setGrid(_grid);
- _render.run();
- _render.sleep();
- }
- }
-
- public static int getMaxStates(String rule) {
- if (rule.equals("Conway"))
- return Conway.states;
- else if (rule.equals("Conway4"))
- return Conway4.states;
- else if (rule.equals("Life Without Death"))
- return LifeWithoutDeath.states;
- else if (rule.equals("Brian's Brain"))
- return BriansBrain.states;
- return 2;
- }
-
- private void setup(String rule) {
- if(rule.equals("Conway")) {
- int[][] glidergun = {
- {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0},
- {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0},
- {0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1},
- {0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1},
- {1,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
- {1,1,0,0,0,0,0,0,0,0,1,0,0,0,1,0,1,1,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0},
- {0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0},
- {0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
- {0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}
- };
- for(int i = 0; i < 36; i++) {
- for(int j = 0; j < 9; j++) {
- _grid.getPatch(i+2,j+2).setState(glidergun[j][i]);
- }
- }
- } else if (rule.equals("Life Without Death")) {
- int[][] pattern = {
- {1,1,1,1,0,1},
- {1,0,1,1,1,1}
- };
- for(int i = 0; i < 6; i++) {
- for(int j = 0; j < 2; j++) {
- _grid.getPatch(i+((_grid.getHeight()-6)/2),j+((_grid.getWidth()-2)/2)).setState(pattern[j][i]);
- }
- }
- } else if (rule.equals("Brian's Brain")) {
- _render.randomize();
- }
- }
-
- public static void main(String[] args) {
- Goldfish g = new Goldfish();
- g.run();
- }
- }
|