import java.applet.*;
import java.awt.*;
import java.awt.event.*;

public class c_barrier extends Applet implements Runnable{

   Thread th = null;
   Image os;
   Graphics og;
   int td[] = {0,0,0,0,-1,-1,-1,0,0,0,0,0,0,0,0};
   int sw1=1,sw2=1,co=3;
   int px,py,cs;

   public void init(){

      os = createImage(680,120);
      og = os.getGraphics();

      addMouseListener(
         new MouseAdapter(){
            public void mousePressed(MouseEvent e){
               px = e.getX();
               py = e.getY();
               if((px > 275) && (px < 320)){
                  if((py > 85) && (td[0] == 0)){
                     for(int r1 = 0;r1 < 14;r1 ++){
                        td[r1] = td[r1+1];
                     }
                     td[14] = 0;
                  }else if((py < 35) && (td[14] == 0) && (sw2 == 1)){
                     for(int r1 = 0;r1 < 14;r1 ++){
                        td[14-r1] = td[13-r1];
                     }
                     td[0] = 0;
                  }else if((py > 35) && (py < 85) && (sw1 == 1)){
                     td[6] = td[6] * -1;
                  }
                  if(td[7] == 0){
                     sw1 = 1 ; sw2 = 1;
                  }else if(td[7] == 1){
                     sw1 = -1 ; sw2 = 1;
                  }else if(td[7] == -1){
                     sw1 = 1 ; sw2 = -1;
                  }
               }else if((px > 395) && (px < 440)){
                  if(py < 35){
                     co ++;
                     if(co > 7)co = 7;
                  }else if(py > 85){
                     co --;
                     if(co < 3)co = 3;
                  }
                  for(int d1= 0;d1 < 15;d1 ++)td[d1] = 0;
                  for(int d2= 0;d2 < co;d2 ++)td[6-d2] = -1;
                  sw1 = 1;sw2 = 1;
               }
               repaint();
            }
         } 
      );

   }

   public void paint(Graphics g){
      og.setColor(Color.white);
      og.fillRect(0,0,680,120);

      og.setColor(new Color(152,251,152));
      og.fillRoundRect(20,20,630,80,40,40);
      og.setColor(Color.black);
      og.drawRoundRect(20,20,630,80,40,40);
      og.setColor(Color.white);
      og.fillRoundRect(35,35,603,50,20,20);
      og.setColor(Color.gray);
      og.drawRoundRect(35,35,603,50,20,20);
      og.setColor(Color.blue);
      og.setFont(new Font("",Font.BOLD,20));
      og.drawString(">>>>>>>>>>>>>>>>>>>>>",380,68);
      og.setColor(Color.black);
      og.drawOval(328,53,15,15);
      og.setColor(Color.gray);
      og.fillOval(330,55,12,12);

      for(int c1 = 0;c1 < 15;c1 ++){
         if(td[c1] != 0){
            if(td[c1] == 1){
               og.setColor(new Color(0,30,220));
            }else if(td[c1] == -1){
               og.setColor(new Color(220,0,30));
            }
            og.fillRoundRect(c1*40+37,37,38,46,20,20);
            og.setColor(Color.gray);
            og.drawRoundRect(c1*40+37,37,38,46,20,20);
            og.drawRoundRect(c1*40+39,39,34,42,20,20);
         }
      }
      if(sw1 == 1){
         og.setColor(Color.blue);
      }else if(sw1 == -1){
         og.setColor(Color.red);
      }
      og.drawRect(275,34,41,52);
      og.drawRect(277,36,37,48);
      if(sw2 == 1){
         og.setColor(Color.blue);
      }else if(sw2 == -1){
         og.setColor(Color.red);
      }
      og.fillRoundRect(347,25,18,10,5,5);
      og.fillRoundRect(347,85,18,10,5,5);
      og.setColor(Color.black);
      og.drawRoundRect(347,25,18,10,5,5);
      og.drawRoundRect(347,85,18,10,5,5);
      if(sw2 == -1){
         og.setColor(Color.red);
         og.fillRect(355,35,2,50);
         og.setColor(Color.black);
         og.drawRect(355,35,2,50);
      }else if(sw2 == 1){
         og.setColor(Color.lightGray);
         og.fillRect(355,35,2,50);
      }
      og.setFont(new Font("",Font.BOLD,20));
      og.setColor(Color.white);
      og.fillRoundRect(275,5,40,25,10,10);
      og.fillRoundRect(275,90,40,25,10,10);
      og.fillRoundRect(395,5,40,25,10,10);
      og.fillRoundRect(395,90,40,25,10,10);
      og.setColor(Color.black);
      og.drawRoundRect(275,5,40,25,10,10);
      og.drawRoundRect(275,90,40,25,10,10);
      og.drawRoundRect(395,5,40,25,10,10);
      og.drawRoundRect(395,90,40,25,10,10);
      og.drawString(">>>",280,25);
      og.drawString("<<<",280,110);
      og.drawLine(405,23,415,13);
      og.drawLine(425,23,415,13);
      og.drawLine(406,23,415,14);
      og.drawLine(424,23,415,14);
      og.drawLine(405,97,415,107);
      og.drawLine(425,97,415,107);
      og.drawLine(406,97,415,106);
      og.drawLine(424,97,415,106);
      og.setFont(new Font("",Font.BOLD,48));
      cs = 0;
      for(int c1 = 0;c1 < 7;c1 ++){
        cs = cs + td[c1+8];
      }
      og.setColor(Color.black);
      if(cs >= co)og.drawString("clear!!",122,77);
      og.setColor(Color.red);
      if(cs >= co)og.drawString("clear!!",120,75);
      g.drawImage(os,0,0,this);
   }

   public void start(){
      if(th == null){
         th = new Thread(this);
         th.start();
      }
   }

   public void stop(){
      th = null;
   }

   public void run(){
      while(th != null){
         try{
            Thread.sleep(100);
         }
         catch (InterruptedException e){
         }
      }
   }

   public void update( Graphics g ){
      paint( g ) ;
   }
}