import java.applet.Applet; import java.awt.*; public class test1 extends Applet { MotionCanvas X; Animator A; TextCanvas T; public void init() { setBackground(Color.black); A=new Animator(); X=new MotionCanvas(); A=A.addMotionCanvas(X); X=X.addAnimator(A); X.resize(200,100); T=new TextCanvas(); T.resize(200,50); X.setBackground(Color.black); add(X); add(T); try { A.start(); } catch(Exception e) { System.out.println(e.toString()); } } } class DBCanvas extends Canvas { public void update(Graphics g) { Graphics g2; Image offscreen = null; offscreen = createImage(size().width, size().height); g2 = offscreen.getGraphics(); paint(g2); g.drawImage(offscreen, 0, 0, this); g2.dispose(); offscreen.flush(); } } class TextCanvas extends Canvas { TextCanvas() {} public void paint(Graphics g) { g.setFont(new Font("TimesRoman",Font.PLAIN,30)); g.setColor(Color.yellow); g.drawString("Rich: Applet 18",10,30); } } class MotionCanvas extends DBCanvas { Animator A; MotionCanvas() { setBackground(Color.black); } MotionCanvas addAnimator(Animator A) { MotionCanvas Y=this; Y.A=A; return(Y); } public void paint(Graphics g) { int count,mod; count=A.getCount(); mod=count; g.setColor(Color.blue); for(int i=1;i<=7;++i) { g.fillRect(-500+100*i+mod,0,50,25); g.fillRect(-500+100*i+2*mod,25,50,25); g.fillRect(-500+100*i+3*mod,50,50,25); g.fillRect(-500+100*i+4*mod,75,50,25); } g.setColor(Color.yellow); for(int i=1;i<=7;++i) { g.fillRect(-450+100*i+mod,0,50,25); g.fillRect(-450+100*i+2*mod,25,50,25); g.fillRect(-450+100*i+3*mod,50,50,25); g.fillRect(-450+100*i+4*mod,75,50,25); } g.setColor(Color.black); for(int i=1;i<=17;++i) { for(int j=0;j<=3;++j) { g.drawRect(-500+50*i+(j+1)*mod,25*j,50,25); } } } } class Animator extends Thread { private int count; MotionCanvas X; public void run() { count=0; while(true) { count=count+1; if(count==100) count=0; X.repaint(); try {sleep(20);} catch(Exception e) { System.out.println(e.toString()); } } } Animator addMotionCanvas(MotionCanvas X) { Animator B=this; B.X=X; return(B); } public int getCount() { return(count); } }