A simple Game of Life implementation in Java
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

55 lines
1.7 KiB

  1. package edu.stuy.goldfish;
  2. import edu.stuy.goldfish.rules.*;
  3. public class Goldfish {
  4. private static final String[] RULES = {"Conway", "Conway4", "Life Without Death", "Brian's Brain"};
  5. private Grid _grid;
  6. private Render _render;
  7. public Goldfish() {
  8. int width = 128;
  9. int height = 128;
  10. _grid = new Grid(width, height);
  11. _render = new Render(width, height, _grid, RULES);
  12. }
  13. public void run() {
  14. setup();
  15. while (true) {
  16. if (!_render.paused) {
  17. String rule = _render.rule;
  18. if (rule.equals("Conway"))
  19. _grid = Conway.run(_grid);
  20. else if (rule.equals("Conway4"))
  21. _grid = Conway4.run(_grid);
  22. else if (rule.equals("Life Without Death"))
  23. _grid = LifeWithoutDeath.run(_grid);
  24. else if (rule.equals("Brian's Brain"))
  25. _grid = BriansBrain.run(_grid);
  26. }
  27. _render.setGrid(_grid);
  28. _render.run();
  29. _render.sleep();
  30. }
  31. }
  32. private void setup() {
  33. for (int i = 0; i < _grid.getWidth(); i += 16) {
  34. for (int j = 0; j < _grid.getHeight(); j += 16) {
  35. _grid.getPatch(i + 1, j + 0).setState(1);
  36. _grid.getPatch(i + 2, j + 1).setState(1);
  37. _grid.getPatch(i + 2, j + 2).setState(1);
  38. _grid.getPatch(i + 1, j + 2).setState(1);
  39. _grid.getPatch(i + 0, j + 2).setState(1);
  40. }
  41. }
  42. }
  43. public static void main(String[] args) {
  44. Goldfish g = new Goldfish();
  45. g.run();
  46. }
  47. }