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

public class c_disk extends Applet implements Runnable{

   Thread th = null;
   Image os;
   Graphics og;
   int dd[][] = {{1,1,1,1,1,0},
                 {1,1,1,1,0,0},
                 {1,1,1,0,1,0},
                 {1,1,0,1,1,0},
                 {1,1,1,0,0,0},
                 {1,1,0,1,0,0},
                 {1,1,0,0,1,0},
                 {1,0,1,0,1,0},
                 {1,1,0,0,0,0},
                 {1,0,1,0,0,0},
                 {1,0,0,1,0,0},
                 {1,0,0,0,0,0}};
   Color c[] = new Color[12];
   int cd,pd;

   public void init(){
      os = createImage(560,320);
      og = os.getGraphics();
      setBackground(new Color(255,255,180));
      c[0] = new Color(255,0,0);
      c[1] = new Color(0,255,0);
      c[2] = new Color(255,255,0);
      c[3] = new Color(0,0,255);
      c[4] = new Color(255,0,255);
      c[5] = new Color(0,255,255);
      c[6] = new Color(128,0,0);
      c[7] = new Color(0,128,0);
      c[8] = new Color(128,128,0);
      c[9] = new Color(0,0,128);
      c[10] = new Color(128,0,128);
      c[11] = new Color(0,128,128);
      addMouseListener(
         new MouseAdapter(){
            public void mousePressed(MouseEvent e){
               pd = (e.getX() - 320) / 80 + e.getY() / 80 * 3;
               if(e.getClickCount() == 2){
                  cd = dd[pd][0];
                  for(int rt = 0;rt < 5;rt ++){
                     dd[pd][rt] = dd[pd][rt+1];
                  }
                  dd[pd][5] = cd;
               }
               repaint();
            }
         }
      );
   }

   public void paint(Graphics g){
      og.setColor(new Color(255,255,180));
      og.fillRect(0,0,560,320);
      og.setColor(Color.black); 
      og.fillOval(20,20,280,280);
      for(int di = 0;di < 12;di ++){
         og.setColor(Color.black);
         og.fillOval((di%3)*80+325,(di/3)*80+5,70,70);
         for(int dr = 0;dr < 6;dr ++){
            if(dd[di][dr] == 1){
               og.setColor(Color.red);
               og.fillArc((di%3)*80+325,(di/3)*80+5,70,70,dr*60,60);
            }
         }
      }
      for(int dr = 0;dr < 6;dr ++){
         cd = 0;
         for(int sd = 0;sd < 12;sd ++){
            cd = cd + dd[sd][dr];
         }
         if(cd != 0){
            og.setColor(c[cd-1]);
            og.fillArc(20,20,280,280,dr*60,60);
         }
      }
      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(30);
         }
         catch (InterruptedException e){
         }
      }
   }

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