import java.awt.*; import java.awt.image.*; import java.applet.*; import java.awt.event.*; import java.io.*; import java.net.*; // This class displays status messages and implements a "reset button" which // calls the cluster.reset() method when clicked. public class bottom extends Applet implements Runnable, MouseListener { int i,j,k,l,x,y,grayCount,currMes=-1,newMes=-1; final String messages[]={"Your turn","Computer's turn","You win!","Computer wins", "Tied game"}; Image background; Graphics bg; long nextTime; MediaTracker mt; Thread runner; Color grays[]=new Color[5]; Font f; FontMetrics fm; cluster clusterApplet; public void init() { mt=new MediaTracker(this); InputStream imgstrm; imgstrm = getClass().getResourceAsStream("row4b.gif"); try { byte imageBytes[] = new byte[imgstrm.available()]; imgstrm.read(imageBytes); background = Toolkit.getDefaultToolkit().createImage(imageBytes); } catch (IOException ioe) {background=createImage(176,21);} mt.addImage(background,0); try { mt.waitForID(0); } catch(InterruptedException e) {} for (i=0;i<5;i++) grays[i]=new Color((i+1)*51,(i+1)*51,(i+1)*51); f=new Font("SansSerif",Font.BOLD,12); fm=getFontMetrics(f); setFont(f); addMouseListener(this); } public void start() { if (runner==null) { runner=new Thread(this); runner.start(); } } public void stop() { if ((runner!=null)&&(runner.isAlive())) { runner.stop(); } runner=null; } public void run() { while (runner!=null) { try { runner.sleep(Math.max(25,nextTime-System.currentTimeMillis())); } catch (InterruptedException e) {} nextTime=System.currentTimeMillis()+80; if (newMes>=0) // New message to display? Fade old one out { if (grayCount>0) grayCount--; else { currMes=newMes; newMes=-1; } repaint(); } else if (grayCount<4 && currMes>=0) // Fade in { grayCount++; repaint(); } } } public void setNewMessage(int m) // Called by the main applet { newMes=m; } public void mouseEntered(MouseEvent me){} public void mouseExited(MouseEvent me){} public void mouseReleased(MouseEvent me){} public void mouseClicked(MouseEvent me){} public void mousePressed(MouseEvent me) { x=me.getX(); y=me.getY(); if ((x-12)*(x-12)+(y-11*y-11)<122) // Reset button clicked { if (clusterApplet==null) clusterApplet=(cluster)getAppletContext().getApplet("cluster"); clusterApplet.reset(); clusterApplet.repaint(); } } public void update(Graphics g) { g.drawImage(background,0,0,this); if (currMes>=0) { g.setColor(grays[grayCount]); g.drawString(messages[currMes],100-fm.stringWidth(messages[currMes])/2,17); } } public void paint(Graphics g) { update(g); } }