import java.awt.*; import java.applet.*; import java.awt.event.*; public class ButterflyApplet extends Applet implements MouseListener { public void init ( ) { int n = getIntegerParam ("numbutterflies"); Rectangle r = getBounds ( ); Graphics g = getGraphics ( ); this.addMouseListener (this); displayer = new ButterflyDisplayer (n, this, r); displayer.start ( ); } private int getIntegerParam (String name) { String value = this.getParameter (name); if (value == "") { return 0; } try { return Integer.parseInt (value); } catch (Exception e) { return 0; } } public void mouseClicked (MouseEvent event) { // You complete this method. displayer.zap (x, y); repaint ( ); } public void paint (Graphics g) { displayer.paint (g); } public void mouseReleased (MouseEvent event) { } public void mousePressed (MouseEvent event) { } public void mouseEntered (MouseEvent event) { } public void mouseExited (MouseEvent event) { } private ButterflyDisplayer displayer; } class ButterflyDisplayer extends Thread { public ButterflyDisplayer (int numButterflies, ButterflyApplet d, Rectangle r) { // Initialize the myButterflies reference here. whereImRunning = d; for (int k=0; k= myX && x < myX+BUTTERFLYSIZE && y >= myY && y < myY+BUTTERFLYSIZE; } public void paint (Graphics g) { Rectangle r = g.getClipBounds ( ); if (myX < r.x) { myX += r.width; // wrap around from left to right } if (myX >= r.x+r.width) { myX -= r.width; // wrap around from right to left } if (myY < r.y) { myY += r.height; // wrap around from top to bottom } if (myY >= r.y+r.width) { myY -= r.height; // wrap around from bottom to top } g.setColor (myColor); g.fillRect (myX, myY, BUTTERFLYSIZE, BUTTERFLYSIZE); } private int myX; private int myY; private Color myColor; }