package chasingevading; import javax.swing.*; import javax.swing.event.ChangeListener; import javax.swing.event.ChangeEvent; import java.util.LinkedList; import java.util.Random; import java.awt.event.*; import java.awt.*; public class ChasingEvading extends JFrame implements ActionListener, WindowListener { private ChasingEvadingPanel myPanel; public ChasingEvading(int rows, int cols) { super(""); myPanel = new ChasingEvadingPanel(rows, cols); setContentPane(myPanel); addWindowListener(this); pack(); setVisible(true); } public void actionPerformed(ActionEvent e) { myPanel.paint(myPanel.getGraphics()); } public void windowActivated(WindowEvent e) { myPanel.paint(myPanel.getGraphics()); } public void windowClosed(WindowEvent e) { System.exit(0); } public void windowClosing(WindowEvent e) { System.exit(0); } public void windowDeactivated(WindowEvent e) { myPanel.paint(myPanel.getGraphics()); } public void windowDeiconified(WindowEvent e) { myPanel.paint(myPanel.getGraphics()); } public void windowIconified(WindowEvent e) { } public void windowOpened(WindowEvent e) { myPanel.paint(myPanel.getGraphics()); } public void run(int startx, int starty) { myPanel.runGame(startx, starty); } public static void main(String[] args) { if (args.length != 2) args = new String[] { "400", "400" }; int xsize = new Integer(args[0]).intValue(); int ysize = new Integer(args[1]).intValue(); if (xsize <= 120) xsize = 120; if (ysize <= 120) ysize = 120; ChasingEvading p = new ChasingEvading(xsize, ysize); Random rand = new Random(); // lets have a fair start int rndx = 0; while (rndx <= 20 || rndx >= xsize - 20 || Math.abs(rndx - p.myPanel.getPrey().getX()) <= 20) { rndx = (int) (rand.nextFloat() * xsize); } int rndy = 0; while (rndy <= 20 || rndy >= xsize - 20 || Math.abs(rndy - p.myPanel.getPrey().getY()) <= 20) { rndy = (int) (rand.nextFloat() * ysize); } p.run(rndx, rndy); } }