import java.util.Iterator; import java.util.ArrayList; import java.util.Collections; import java.util.List; public class GODLModel extends ModelObservable { private RuleSet rules; private Playground playground; private List generators; public GODLModel(int xSize, int ySize, RuleSet rules) { this.rules = rules; this.playground = new Playground(xSize, ySize, 0); this.generators = new java.util.ArrayList(); } public void setLifeform(int x, int y, int value) { playground.set(x, y, value); notifyObservers(); } public void setPlayground(int[][] pg) { Playground newGround = new Playground(pg.length, pg[0].length, 0); for(int i = 0; i < pg.length; i++) { for(int j = 0; j < pg[i].length; j++) { newGround.set(i, j, pg[i][j]); } } this.playground = newGround; notifyObservers(); } public void nextGeneration() { Playground newGround = new Playground(playground.getXSize(), playground.getYSize(), playground.getGeneration() + 1); Iterator it = playground.iterator(); while(it.hasNext()) { LifeForm current = (LifeForm) it.next(); newGround.set(current.getX(), current.getY(), rules.apply(current)); } this.playground = newGround; notifyObservers(); } public int[][] getPlayground() { return playground.getField(); } }