/* * Maze * Copyright (C) 2000 Paul Davis, pdavis@lpccomp.bc.ca * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ import java.util.*; import java.awt.*; import java.awt.event.*; /** * The Maze Application. * Takes from one to three command line arguments. * If one argument, it is used as the X and Y dimensions of a 2D maze. * If two arguments, they are used as the X and Y dimensions of a 2D maze. * If three arguments, they are used as the X,Y and Z dimensions of a 3D maze. */ public class MazeApp extends Frame { private static MazeApp app; private static Maze3D disp; private static Coordinate3D size; private static Maze m; public static void main(String[] args) { int x=10; int y=10; int z=1; try { if ( args.length > 0 ) x = y = Integer.parseInt(args[0]); if ( args.length > 1 ) y = Integer.parseInt(args[1]); if ( args.length > 2 ) z = Integer.parseInt(args[2]); } catch ( NumberFormatException e ) { System.out.println("Usage: MazeApp xsize [ysize [zsize]]"); System.exit(1); } size = new Coordinate3D(x,y,z); m = new Maze(size); m.setRandomFinish(); disp = new Maze3D(m,400,400); app = new MazeApp(); app.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }); app.add(disp,BorderLayout.NORTH); Button restartButton = new Button("New Maze"); restartButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { app.remove(disp); Maze m2 = new Maze(size); m2.setRandomFinish(); disp = new Maze3D(m2,400,400); app.add(disp,BorderLayout.NORTH); app.validate(); app.repaint(); } }); Button exitButton = new Button("Exit"); exitButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { System.exit(1); } }); Panel buttonPanel = new Panel(); buttonPanel.add(restartButton); buttonPanel.add(exitButton); app.add(buttonPanel,BorderLayout.SOUTH); app.pack(); app.show(); } }