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

public class v_buildings extends Applet implements Runnable{

   int td[][] = new int[6][6];
   int tdc[][] = new int[6][6];
   Choice cho = new Choice();
   Label spa;
   int pd[][][] = {{{4,2,4,1,2,3},{3,2,1,5,4,2},{3,1,3,2,4,2},{2,2,1,3,2,4}},
                   {{3,2,2,3,1,3},{2,3,4,1,2,2},{3,5,2,1,5,2},{2,4,4,1,2,4}},
                   {{2,4,4,1,2,3},{3,4,2,4,2,1},{1,2,4,2,3,2},{2,2,2,3,1,4}},
                   {{2,3,4,1,3,2},{3,1,2,2,3,2},{5,1,5,2,3,2},{4,1,3,2,3,2}}};
   int max[] = new int[6];
   int che[] = new int[6];
   int px,py,co;
   int pn = 0;
   Thread th = null;
   Image os;
   Graphics og;

   public void init(){
      os = createImage(270,270);
      og = os.getGraphics();
      setBackground(Color.white);
      setLayout(new BorderLayout());
      Panel pan = new Panel();
      pan.setLayout(new FlowLayout());
      pan.add(cho);
      cho.addItem("    No.1    ");
      cho.addItem("    No.2    ");
      cho.addItem("    No.3    ");
      cho.addItem("    No.4    ");
      cho.addItemListener(new MyListener());
      add("South",pan);
      addMouseListener(
         new MouseAdapter(){
            public void mousePressed(MouseEvent e){
               px = (e.getX() - 15) / 30;
               py = (e.getY() - 15) / 30;
               if((px>=1)&&(px<=6)&&(py>=1)&&(py<=6)){
                  td[py-1][px-1] ++;
                  if(td[py-1][px-1] > 6)td[py-1][px-1] = 0;
               }
               repaint();
            }
         }
      );

   }

   class MyListener implements ItemListener{
      public void itemStateChanged(ItemEvent e){
         Choice cho = (Choice)e.getSource();
         switch(cho.getSelectedIndex()){
            case 0 : pn = 0 ; break;
            case 1 : pn = 1 ; break;
            case 2 : pn = 2 ; break;
            case 3 : pn = 3 ; break;
         }
         for(int d1 = 0;d1 < 6;d1 ++){
            for(int d2 = 0;d2 < 6;d2 ++){
               td[d2][d1] = 0;
               tdc[d2][d1] = 0;
            }
         }
         repaint();
      }
   }


   public void paint(Graphics g){
      og.setColor(Color.white);
      og.fillRect(0,0,270,270);
      for(int k1 = 0;k1 < 6;k1 ++){
         for(int k2 = 0;k2 < 6;k2 ++){
            og.setColor(Color.yellow);
            og.fill3DRect(k1*30+45,k2*30+45,30,30,true);
         }
      }
      for(int k1 = 0;k1 < 6;k1 ++){
         og.setFont(new Font("",Font.BOLD,24));
         for(int k2 = 0;k2 < 6;k2 ++){

            if(td[k2][k1] != 0){
               og.setColor(Color.darkGray);
               for(int k3 = 0;k3 < td[k2][k1];k3 ++){
                  og.fillRect(k1*30+51-td[k2][k1],k2*30+51-td[k2][k1],29-2*(6-td[k2][k1]),29-2*(6-td[k2][k1]));
               }
               og.setFont(new Font("",Font.PLAIN,24));
               og.setColor(Color.white);
               og.drawString(""+td[k2][k1],30*k1+53,30*k2+68);
            }

         }
         max[k1] = 0 ; co = 0;
         for(int k2 = 0;k2 < 6;k2 ++){
            if(max[k1] < td[5-k2][k1]){
               max[k1] = td[5-k2][k1];
               co ++;
            }
            if(co == pd[pn][0][k1]){
               og.setColor(Color.blue);
            }else{
               og.setColor(Color.red);
            }
         }
         og.drawString(""+pd[pn][0][k1],30*k1+55,250);
         max[k1] = 0 ; co = 0;
         for(int k2 = 0;k2 < 6;k2 ++){
            if(max[k1] < td[k1][5-k2]){
               max[k1] = td[k1][5-k2];
               co ++;
            }
            if(co == pd[pn][1][5-k1]){
               og.setColor(Color.blue);
            }else{
               og.setColor(Color.red);
            }
         }
         og.drawString(""+pd[pn][1][5-k1],230,30*k1+70);
         max[k1] = 0 ; co = 0;
         for(int k2 = 0;k2 < 6;k2 ++){
            if(max[k1] < td[k2][k1]){
               max[k1] = td[k2][k1];
               co ++;
            }
            if(co == pd[pn][2][5-k1]){
               og.setColor(Color.blue);
            }else{
               og.setColor(Color.red);
            }
         }
         og.drawString(""+pd[pn][2][5-k1],30*k1+55,40);
         max[k1] = 0 ; co = 0;
         for(int k2 = 0;k2 < 6;k2 ++){
            if(max[k1] < td[k1][k2]){
               max[k1] = td[k1][k2];
               co ++;
            }
            if(co == pd[pn][3][k1]){
               og.setColor(Color.blue);
            }else{
               og.setColor(Color.red);
            }
         }
         og.drawString(""+pd[pn][3][k1],25,30*k1+70);

         for(int t1 = 0;t1 < 6;t1 ++){
            che[t1] = 0;
         }
         for(int t2 = 0;t2 < 6;t2 ++){
            if(td[k1][t2] != 0){
               che[td[k1][t2]-1] = 1;
            }
         }
         co = 1;
         for(int t3 = 0;t3 < 6;t3 ++){
            co = co * che[t3];
         }
         if(co == 1){
            og.setColor(Color.blue);
            og.drawRect(45,30*k1+45,179,29);
            og.drawLine(15,30*k1+60,20,30*k1+60);
            og.drawLine(250,30*k1+60,255,30*k1+60);
         }
         for(int t1 = 0;t1 < 6;t1 ++){
            che[t1] = 0;
         }
         for(int t2 = 0;t2 < 6;t2 ++){
            if(td[t2][k1] != 0){
               che[td[t2][k1]-1] = 1;
            }
         }
         co = 1;
         for(int t3 = 0;t3 < 6;t3 ++){
            co = co * che[t3];
         }
         if(co == 1){
            og.setColor(Color.blue);
            og.drawRect(30*k1+45,45,29,179);
            og.drawLine(30*k1+60,10,30*k1+60,15);
            og.drawLine(30*k1+60,255,30*k1+60,260);
         }
      }
      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 ) ;
   }
}