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

public class match extends Applet implements Runnable{

   Image m0,m1,m2,mp;
   int bd[] = {1,1,1,1,1,1,1,1,1,1};
   int px,rx,cx,cm;
   int mx,my;
   int ss,se,sm;
   int pfg,rfg;
   Button rep;
   Thread th = null;
   Image os;
   Graphics og;

   public void init(){
       m0 = getImage(getDocumentBase(),"");
       m1 = getImage(getDocumentBase(),"Picture/match.gif");
       m2 = getImage(getDocumentBase(),"Picture/match2.gif");

       setBackground(Color.white);
       os = createImage(600,170);
       og = os.getGraphics();
       setLayout(new BorderLayout());
       Panel pan = new Panel();
       pan.setLayout(new FlowLayout());
       pan.add(rep = new Button("  replay  "));
       add("South",pan);
       rep.addActionListener(new ActionListener(){
           public void actionPerformed(ActionEvent e){
               for(int i = 0;i < 10;i ++){
                   bd[i] = 1;
               }
           repaint();
           }
       });
       addMouseListener(
           new MouseAdapter(){
               public void mousePressed(MouseEvent e){
                   if((e.getX() > 0) && (e.getX() < 600) && (e.getY() > 0) && (e.getY() < 150)){
                       px = (e.getX() - 50) / 50;
                       cx = px;
                       cm = bd[px];
                       if(bd[px] == 1){
                           mp = m1;
                           mx = e.getX() - 25;
                           my = e.getY() - 75;
                           bd[px] = 0;
                           pfg = 1;
                       }
                       repaint();
                   }
               }
               public void mouseReleased(MouseEvent e){
                   if((e.getX() > 0) && (e.getX() < 600) && (e.getY() > 0) && (e.getY() < 150)){
                       rx = (e.getX() - 50) / 50;
                       if(bd[rx] == 1){
                           if(px < rx){
                               ss = px + 1;
                               se = rx - 1;
                           }else{
                               ss = rx + 1;
                               se = px - 1;
                           }
                           if(ss <= se){
                               sm = 0;
                               for(int k = ss;k <= se;k ++){
                                   sm = sm + bd[k];
                               }
                           }else{
                               sm = 0;
                           }
                           if((sm == 2) && (pfg == 1)){
                               rfg = 1;
                           }
                       }
                   }
                   if(rfg == 1){
                       bd[rx] = 2;
                   }else{
                       bd[cx] = cm;
                   }
                   pfg = 0;
                   rfg = 0;
                   mp = m0;
                   repaint();
               }
           }
       );
       addMouseMotionListener(
           new MouseMotionAdapter(){
               public void mouseDragged(MouseEvent e){
                   mx = e.getX() - 25;
                   my = e.getY() - 75;
                   repaint();
               }
            }
        );

       
   }

   public void paint(Graphics g){
       og.setColor(Color.white); 
       og.fillRect(0,0,600,170);
       for(int k = 0;k < 10;k ++){
            switch(bd[k]){
                 case 0 : og.drawImage(m0,50 * k + 50,0,this);break;
                 case 1 : og.drawImage(m1,50 * k + 50,0,this);break;
                 case 2 : og.drawImage(m2,50 * k + 50,0,this);break;
            }
       }
       og.drawImage(mp,mx,my,this);
       g.drawImage(os,0,0,this);
   }

   public void stop(){
      th = null;
   }

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

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