// Lars Sorensen TYJava in 21 days // excode from pg 206, COMMENTSCOMMENTS // // SHELL FOR ANIMATION APPLETS // import java.awt.Graphics; import java.awt.Image; import java.awt.Color; public class neko extends java.applet.Applet implements Runnable { Image nekopics[] = new Image[9]; Image currentimg; Thread runner; int xpos; int ypos = 50; public void init() { String nekosrc[] = { "right1.gif", "right2.gif", "stop.gif", "yawn.gif", "scratch1.gif", "scratch2.gif", "sleep1.gif", "sleep2.gif", "awake.gif" }; for ( int i = 0; i < nekopics.length; i++ ) { nekopics[i] = getImage(getDocumentBase(),"/images/" + nekosrc[i]); } } // end of init public void start() { if (runner == null ) { runner = new Thread(this); runner.start(); } } // end of start public void stop() { if (runner != null ) { runner.stop(); runner = null; } } // end of stop public void run() { while(true) { setBackground(Color.white); // run from one side to the middle.... nekorun(0, this.size().width /2 ); // stop and pause currentimg = nekopics[2]; repaint(); pause(1000); // yawn currentimg = nekopics[3]; repaint(); pause(1000); // scratch four times nekoscratch(4); // sleep for 5 turns nekosleep(5); // wake up and run off currentimg = nekopics[8]; repaint(); pause(500); nekorun(xpos, this.size().width + 10 ); } // end of while } // end of run void nekorun(int start, int end) { for (int i = start; i < end; i +=10) { this.xpos = i; // swap images if (currentimg == nekopics[0] ) currentimg = nekopics[1]; else if (currentimg == nekopics[1] ) currentimg = nekopics[0]; else currentimg = nekopics[0]; repaint(); pause(150); } } // end of nekorun void nekoscratch(int numtimes) { for (int i = numtimes; i > 0; i-- ) { currentimg = nekopics[4]; repaint(); pause(150); currentimg = nekopics[5]; repaint(); pause(150); } } // end of nekoscratch void nekosleep(int numtimes) { for (int i = numtimes; i > 0; i-- ) { currentimg = nekopics[6]; repaint(); pause(250); currentimg = nekopics[7]; repaint(); pause(250); } } // end of nekosleep void pause(int time) { try { Thread.sleep(time); } catch (InterruptedException e ) { } } // end of pause public void paint(Graphics g) { g.drawImage(currentimg, xpos, ypos, this); } // end of paint } // end of class neko