import java.applet.Applet; import java.awt.*; class BlinkingShape implements Blinkable { int x, y; Applet applet; float blinkingRate = MAXRATE; int laptime = (int) (1/blinkingRate); private Thread blinker = null; boolean isVisibleQ = true; int randomNumber(int low, int high) { return ((int) (low + Math.random()*(high-low))); } void randomize() { laptime = randomNumber(500,2000); setBlinkingRate((float) 1/laptime); laptime = (int) (1/blinkingRate); x = randomNumber(20,100); y = randomNumber(40,120); } public void draw(Graphics g) {} public void run () { while (blinker != null) { applet.repaint(); try { Thread.sleep(laptime/2); } catch (InterruptedException e) { break; } isVisibleQ = !isVisibleQ; } } public void startBlinking () { if ( blinker == null) { blinker = new Thread(this); blinker.start(); } } public void stopBlinking () { if (blinker != null) { blinker.stop(); } blinker = null; } public float getBlinkingRate () { return blinkingRate; } public void setBlinkingRate (float r) { blinkingRate = Math.max(MINRATE, Math.min(r, MAXRATE)); } }