import edu.kzoo.grid.display.DisplayMap; import edu.kzoo.grid.display.ScaledImageDisplay; import edu.kzoo.grid.gui.GridAppFrame; import edu.kzoo.grid.gui.GridPkgFactory; import edu.kzoo.grid.gui.nuggets.BasicHelpMenu; import edu.kzoo.util.Debug; public class MysteryApp { public static void main(String[] args) { // Create and show the window containing the graphical user interface. GridAppFrame window = new MysteryGUI(); window.includeMenu(new BasicHelpMenu("MysteryApp", "Your Name Here", "with assistance from (whom?)", "version date", "file:MysteryApp.html")); window.constructWindowContents("MysteryApp Program", null, 0, 0, 0); Grid grid = window.getGrid(); while ( ! window.getController().programIsDone() ) { for ( r = 0; r < grid.numRows(); r++ ) { for ( c = 0; c < grid.numCols(); c++ ) { GridObject obj = grid.objectAt(new Location(r, c)); if ( obj != null ) { obj.act(); } } } } } } ======= THIS SHOULD BE IN A SEPARATE FILE ======= import edu.kzoo.grid.GridObject; import edu.kzoo.grid.Location; import edu.kzoo.util.Debug; public class MysteryGridObject extends GridObject { public void act() { Location something = getSomething(); doIt(something); } protected Location getSomething() { int currentRow = location().row(); int currentCol = location().col(); return new Location(currentRow+1, currentCol); } protected void doIt(Location newLoc) { if ( ! grid().isEmpty(newLoc) ) return; GridObject dupl = new MysteryGridObject(); grid().add(dupl, newLoc); appController.getController().note(dupl); } }