import java.awt.*;

public class cross extends BufferedApplet
{
   int width = 0, height;
   int cx, cy, cr; // CIRCLE X,Y,RADIUS
   int wx, wy, wr; // WEIGHT X,Y,RADIUS
   int bw, bh;

   public void render(Graphics g) {
      int x, y;
      if (width == 0) {
	 width  = bounds().width;
	 height = bounds().height;
	 wr = width/15;
	 wx = width/4;
	 wy = width/5;
	 bh = width / 5;
	 bw = bh / 4;
	 cx = width/2;
	 cy = width/2;
	 cr = width/2 - 1;
      }

      // CLEAR BACKGROUND

      g.setColor(Color.white);
      g.fillRect(0,0,width,width);

      // DRAW FIRST VEHICLES

      for (int i = 0 ; i < width/2 ; i++) {

         x = cx + (cx-wx)*(width/2-3*bw)/(width/2);
         y = width/2 + (2*i - 1) * (width/2 - bw);

         g.setColor(Color.black);
         g.fillRect(0, y-bw, width, 2*bw+1);
         g.setColor(Color.gray.brighter());
         g.fillRect(0, y-bw+1, width, 2*bw-1);
         g.setColor(Color.red);
         g.fillRect(x - bh/2, y-bw/2, bh, bw);
         g.setColor(Color.black);
         g.drawRect(x - bh/2, y-bw/2, bh, bw);

         g.fillRect(x - bh/4 - bh/8, y - 3*bw/4 - bw/4, bh/4, bw/2);
         g.fillRect(x - bh/4 - bh/8, y + 3*bw/4 - bw/4, bh/4, bw/2);
         g.fillRect(x + bh/4 - bh/8, y - 3*bw/4 - bw/4, bh/4, bw/2);
         g.fillRect(x + bh/4 - bh/8, y + 3*bw/4 - bw/4, bh/4, bw/2);
      }

      // DRAW SECOND VEHICLES

      for (int i = 0 ; i < width/2 ; i++) {

         x = width/2 + (2*i - 1) * (width/2-bw);
         y = cy + (cy-wy)*(width/2-3*bw)/(width/2);

         g.setColor(Color.black);
         g.fillRect(x-bw, 0, 2*bw+1, width);
         g.setColor(Color.gray.brighter());
         g.fillRect(x-bw+1, 0, 2*bw-1, width);
         g.setColor(Color.red);
         g.fillRect(x-bw/2, y - bh/2, bw, bh);
         g.setColor(Color.black);
         g.drawRect(x-bw/2, y - bh/2, bw, bh);

         g.fillRect(x - 3*bw/4 - bw/4, y - bh/4 - bh/8, bw/2, bh/4);
         g.fillRect(x + 3*bw/4 - bw/4, y - bh/4 - bh/8, bw/2, bh/4);
         g.fillRect(x - 3*bw/4 - bw/4, y + bh/4 - bh/8, bw/2, bh/4);
         g.fillRect(x + 3*bw/4 - bw/4, y + bh/4 - bh/8, bw/2, bh/4);

      }

      // DRAW TABLE OUTLINE

      g.setColor(Color.black);
      g.drawRect(cx-cr, cy-cr, 2*cr, 2*cr);

      // DRAW USER-DRIVEN WEIGHT

      g.setColor(Color.blue);
      g.fillOval(wx-wr,wy-wr,2*wr,2*wr);
   }

   int mx, my;

   public boolean mouseDown(Event e, int x, int y) {
      mx = x;
      my = y;
      return true;
   }
   public boolean mouseDrag(Event e, int x, int y) {
      int X = wx + x-mx;
      int Y = wy + y-my;
      if (X > wr && X < width - wr && Y > wr && Y < width - wr) {
         wx = X;
         wy = Y;
      }
      mx = x;
      my = y;
      damage = true;
      return true;
   }
   public boolean mouseUp(Event e, int x, int y) {
      return true;
   }
}
