/* cappello@cs.ucsb.edu Peter Cappello Perm. no. 123456 Project 6: Zap 'em! Using inheritance; burn processing is in MousePressed; game initialization is put in a method; */ import java.awt.*; import java.applet.*; import java.awt.event.*; public class zapem extends Applet implements ActionListener, MouseListener { final static int NUMTYPES = 2, // number of kinds of roaches FIELDSIZE = 350, XUL = 25, YUL = 35, XLR = 25 + FIELDSIZE, YLR = 35 + FIELDSIZE, RECTANGLE = 0, OVAL = 1, MAXROACHES = 9; Label speedL = new Label("Speed: 1 - 5 (Slowest)"), numL = new Label("Number of Roaches: 1 - 9"); TextField speedT = new TextField("5", 1), numT = new TextField("2", 1); int speed = 5, // speed of movements num = 2; // number of roaches Roach roaches[] = new Roach[MAXROACHES]; public void init() { add(speedL); add(speedT); add(numL); add(numT); speedT.addActionListener(this); numT.addActionListener(this); addMouseListener(this); newGame(); } public void paint(Graphics g) { g.drawRect(XUL, YUL, FIELDSIZE, FIELDSIZE); // Lost game? for (int i = 0; i < num; i++) if (roaches[i].out(XUL, YUL, XLR, YLR)) { g.fillRect(XUL, YUL, FIELDSIZE, FIELDSIZE); return; } // move & draw roaches for (int i = 0; i < num; i++) { roaches[i].move(); roaches[i].draw(g); } try { Thread.sleep(speed*100); } catch (InterruptedException e) { showStatus(e.toString()); } repaint(); } public void actionPerformed(ActionEvent e) { speed = Integer.parseInt(speedT.getText()); if (speed < 1 || speed > 5) { speedT.setText("5"); speed = 5; } num = Integer.parseInt(numT.getText()); if (num < 1 || num > 9) { numT.setText("2"); num = 2; } newGame(); repaint(); } public void newGame() { for (int i = 0; i < num; i++) switch ((int) (Math.random()*NUMTYPES)) { case RECTANGLE: roaches[i] = new Rectangle(FIELDSIZE); break; case OVAL: roaches[i] = new Oval(FIELDSIZE); break; } } public void mousePressed(MouseEvent e) { int x = e.getX(), y = e.getY(); // burn roaches that cursor is in for (int i = 0; i < num; i++) if (roaches[i].in(x, y)) { roaches[i].setColor(Color.red); roaches[i].setDx(0); roaches[i].setDy(0); } repaint(); } public void mouseClicked(MouseEvent e) {} public void mouseReleased(MouseEvent e) {} public void mouseEntered(MouseEvent e) {} public void mouseExited(MouseEvent e) {} }