| @@ -24,15 +24,7 @@ public class Goldfish { | |||||
| } | } | ||||
| if (!_render.paused) { | if (!_render.paused) { | ||||
| _render.acquireLock(0); | _render.acquireLock(0); | ||||
| 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); | |||||
| doLogic(_render.rule); | |||||
| _render.releaseLock(0); | _render.releaseLock(0); | ||||
| } | } | ||||
| _render.setGrid(_grid); | _render.setGrid(_grid); | ||||
| @@ -41,60 +33,38 @@ public class Goldfish { | |||||
| } | } | ||||
| } | } | ||||
| private void doLogic(String 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); | |||||
| } | |||||
| public static int getMaxStates(String rule) { | 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; | |||||
| 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) { | 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")) { | |||||
| int[][] pattern = { | |||||
| {2,0,2,0,2}, | |||||
| {2,0,2,0,2}, | |||||
| {0,1,0,1,0} | |||||
| }; | |||||
| for (int i = 0; i < 5; i++) { | |||||
| for (int j = 0; j < 3; j++) { | |||||
| _grid.getPatch(i + ((_grid.getHeight() - 5) / 2), | |||||
| j + ((_grid.getWidth() - 3) / 2)).setState(pattern[j][i]); | |||||
| } | |||||
| } | |||||
| } | |||||
| if (rule.equals("Conway")) | |||||
| Conway.setup(_grid); | |||||
| else if (rule.equals("Conway4")) | |||||
| Conway4.setup(_grid); | |||||
| else if (rule.equals("Life Without Death")) | |||||
| LifeWithoutDeath.setup(_grid); | |||||
| else if (rule.equals("Brian's Brain")) | |||||
| BriansBrain.setup(_grid); | |||||
| } | } | ||||
| public static void main(String[] args) { | public static void main(String[] args) { | ||||
| @@ -23,4 +23,18 @@ public class BriansBrain extends RuleSet { | |||||
| } | } | ||||
| return newGrid; | return newGrid; | ||||
| } | } | ||||
| public static void setup(Grid g) { | |||||
| int[][] pattern = { | |||||
| {2,0,2,0,2}, | |||||
| {2,0,2,0,2}, | |||||
| {0,1,0,1,0} | |||||
| }; | |||||
| for (int i = 0; i < 5; i++) { | |||||
| for (int j = 0; j < 3; j++) { | |||||
| g.getPatch(i + ((g.getHeight() - 5) / 2), | |||||
| j + ((g.getWidth() - 3) / 2)).setState(pattern[j][i]); | |||||
| } | |||||
| } | |||||
| } | |||||
| } | } | ||||
| @@ -6,7 +6,7 @@ import edu.stuy.goldfish.Patch; | |||||
| public class Conway extends RuleSet { | public class Conway extends RuleSet { | ||||
| public static int states = 2; | public static int states = 2; | ||||
| public static Grid run (Grid g) { | |||||
| public static Grid run(Grid g) { | |||||
| Grid newGrid = new Grid(g.getWidth(), g.getHeight(), false); | Grid newGrid = new Grid(g.getWidth(), g.getHeight(), false); | ||||
| for (int i = 0; i < g.getWidth(); i++) { | for (int i = 0; i < g.getWidth(); i++) { | ||||
| for (int j = 0; j < g.getHeight(); j++) { | for (int j = 0; j < g.getHeight(); j++) { | ||||
| @@ -24,4 +24,23 @@ public class Conway extends RuleSet { | |||||
| } | } | ||||
| return newGrid; | return newGrid; | ||||
| } | } | ||||
| public static void setup(Grid g) { | |||||
| 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++) { | |||||
| g.getPatch(i + 2, j + 2).setState(glidergun[j][i]); | |||||
| } | |||||
| } | |||||
| } | |||||
| } | } | ||||
| @@ -7,7 +7,7 @@ import edu.stuy.goldfish.Patch; | |||||
| public class Conway4 extends RuleSet { | public class Conway4 extends RuleSet { | ||||
| public static int states = 2; | public static int states = 2; | ||||
| public static Grid run (Grid g) { | |||||
| public static Grid run(Grid g) { | |||||
| Grid newGrid = new Grid(g.getWidth(), g.getHeight(), false); | Grid newGrid = new Grid(g.getWidth(), g.getHeight(), false); | ||||
| for (int i = 0; i < g.getWidth(); i++) { | for (int i = 0; i < g.getWidth(); i++) { | ||||
| for (int j = 0; j < g.getHeight(); j++) { | for (int j = 0; j < g.getHeight(); j++) { | ||||
| @@ -25,4 +25,17 @@ public class Conway4 extends RuleSet { | |||||
| } | } | ||||
| return newGrid; | return newGrid; | ||||
| } | } | ||||
| public static void setup(Grid g) { | |||||
| 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++) { | |||||
| g.getPatch(i + ((g.getHeight() - 6) / 2), | |||||
| j + ((g.getWidth() - 2) / 2)).setState(pattern[j][i]); | |||||
| } | |||||
| } | |||||
| } | |||||
| } | } | ||||
| @@ -7,7 +7,7 @@ import edu.stuy.goldfish.Patch; | |||||
| public class LifeWithoutDeath extends RuleSet { | public class LifeWithoutDeath extends RuleSet { | ||||
| public static int states = 2; | public static int states = 2; | ||||
| public static Grid run (Grid g) { | |||||
| public static Grid run(Grid g) { | |||||
| Grid newGrid = new Grid(g.getWidth(), g.getHeight(), false); | Grid newGrid = new Grid(g.getWidth(), g.getHeight(), false); | ||||
| for (int i = 0; i < g.getWidth(); i++) { | for (int i = 0; i < g.getWidth(); i++) { | ||||
| for (int j = 0; j < g.getHeight(); j++) { | for (int j = 0; j < g.getHeight(); j++) { | ||||
| @@ -21,4 +21,17 @@ public class LifeWithoutDeath extends RuleSet { | |||||
| } | } | ||||
| return newGrid; | return newGrid; | ||||
| } | } | ||||
| public static void setup(Grid g) { | |||||
| 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++) { | |||||
| g.getPatch(i + ((g.getHeight() - 6) / 2), | |||||
| j + ((g.getWidth() - 2) / 2)).setState(pattern[j][i]); | |||||
| } | |||||
| } | |||||
| } | |||||
| } | } | ||||
| @@ -12,7 +12,15 @@ public class RuleSet { | |||||
| * | * | ||||
| * @return The new grid | * @return The new grid | ||||
| */ | */ | ||||
| public static Grid run (Grid g) { | |||||
| public static Grid run(Grid g) { | |||||
| return g; | return g; | ||||
| } | } | ||||
| /** | |||||
| * Setup the grid with an interesting initial pattern. | |||||
| * | |||||
| * @param g The grid this is running on | |||||
| */ | |||||
| public static void setup(Grid g) { | |||||
| } | |||||
| } | } | ||||