1  import  java.applet.*;
  2  import  java.awt.*;
  3  import  java.util.*;
  4
  5
  6  public class Application extends Applet
  7  {
  8      Vector          before,after;
  9      Graphics        g;
 10
 11      public void init()
 12      {
 13          primitive       object1,object2;
 14          visitor         bewegung;
 15          int             i;
 16          Random          auswahl=new Random();
 17
 18          g=getGraphics();
 19          before=new Vector();
 20          after=new Vector();
 21
 22          for(i=1;i<=10;i++)
 23          {
 24              switch(auswahl.nextInt()%3)
 25              {
 26                  case 0:
 27                  {
 28                      float x=auswahl.nextFloat()*200;
 29                      float y=auswahl.nextFloat()*100;
 30                      bewegung=new movevisitor(x,y);
 31                      break;
 32                  }
 33
 34                  case 1:
 35                  {
 36                      float x1=auswahl.nextFloat()*200;
 37                      float y1=auswahl.nextFloat()*100;
 38                      float x2=auswahl.nextFloat()*200;
 39                      float y2=auswahl.nextFloat()*100;
 40                      bewegung=new mirrorvisitor(x1,y1,x2,y2);
 41                      break;
 42                  }
 43
 44                  default:
 45                  {
 46                      float c1=auswahl.nextFloat()*200;
 47                      float c2=auswahl.nextFloat()*100;
 48                      float a=auswahl.nextFloat()*2;
 49                      bewegung=new rotatevisitor(c1,c2,a);
 50                  }
 51              }
 52
 53              switch(auswahl.nextInt()%3)
 54              {
 55                  case 0:
 56                  {
 57                      float x=auswahl.nextFloat()*100+320;
 58                      float y=auswahl.nextFloat()*100+240;
 59                      object1=new point(x,y);
 60                      object2=new point(x,y);
 61                      break;
 62                  }
 63
 64                  case 1:
 65                  {
 66                      float x1=auswahl.nextFloat()*100+320;
 67                      float y1=auswahl.nextFloat()*100+240;
 68                      float x2=auswahl.nextFloat()*100+320;
 69                      float y2=auswahl.nextFloat()*100+340;
 70                      object1=new line(x1,y1,x2,y2);
 71                      object2=new line(x1,y1,x2,y2);
 72                      break;
 73                  }
 74
 75                  default:
 76                  {
 77                      float c1=auswahl.nextFloat()*100+320;
 78                      float c2=auswahl.nextFloat()*100+240;
 79                      float r =auswahl.nextFloat()*100;
 80                      object1=new circle(c1,c2,r);
 81                      object2=new circle(c1,c2,r);
 82                  }
 83              }
 84
 85              before.addElement(object1);
 86              object2.receive(bewegung);
 87              after.addElement(object2);
 88          }
 89      }
 90
 91      public void paint(Graphics g)
 92      {
 93          int i;
 94          int n=before.size();
 95          primitive object;
 96
 97          for(i=0;i<n;i++)
 98          {
 99              try
100              {
101                  object=(primitive) before.elementAt(i);
102                  object.zeichne(g);
103                  Thread.sleep(500);
104                  g.setColor(Color.red);
105                  object=(primitive) after.elementAt(i);
106                  object.zeichne(g);
107                  Thread.sleep(1000);
108                  g.clearRect(0,0,800,600);
109                  g.setColor(Color.black);
110
111              }
112              catch(InterruptedException a)
113              {
114                  //hier passiert nix 
115              }
116          }
117      }
118  }