public void mouseClicked(MouseEvent e) {
    Graphics g = getGraphics();

    if (e.getButton() == 1)
    {
      int x = (e.getX() - this.W) / this.W;
      int y = (e.getY() - this.W) / this.W;

      if ((x < 0) || (x >= 10) || (y < 0) || (y >= 10))
      {
        return;
      }

      if (this.m_map[(y * this.m_nCol + x)] == this.BLANK_STATE)
        return;
      if (!this.Select_first)
      {
        this.x1 = x; this.y1 = y;

        DrawSelectedBlock(this.x1, this.y1, g);
        this.Select_first = true;
      }
      else
      {
        this.x2 = x; this.y2 = y;

        if ((this.x1 == this.x2) && (this.y1 == this.y2)) return;

        DrawSelectedBlock(this.x2, this.y2, g);

        if ((IsSame(this.x1, this.y1, this.x2, this.y2)) && (IsLink(this.x1, this.y1, this.x2, this.y2)))
        {
          int grade = Integer.parseInt(Frame.textarea1.getText()) + 2;
          Frame.textarea1.setText(String.valueOf(grade));

          DrawLinkLine(this.x1, this.y1, this.x2, this.y2, this.LType);

          this.m_map[(this.y1 * this.m_nCol + this.x1)] = this.BLANK_STATE;
          this.m_map[(this.y2 * this.m_nCol + this.x2)] = this.BLANK_STATE;
          this.Select_first = false;
          
          ///play audio by static method.
          Frame.playAudio("msc\\cancle.wav");
          
          try
          {
            Thread.sleep(0L);
          }
          catch (InterruptedException ie)
          {
            ie.printStackTrace();
          }
          CleanLineAndBlock();
          
          if (!Find2Block() && !IsWin()) {
        	JOptionPane.showMessageDialog(this, "ûͨķˣ");
          }
          else if (IsWin()) {
        	  g.drawImage(this.backgroundImage, this.W, this.W, 500, 500, this);
        	  JOptionPane.showMessageDialog(this, "ϲʤ,ʼ¾");
          }
        }
        else
        {
          int i = this.y1 * this.m_nCol + this.x1;
          g.drawImage(create_image(this.m_map[i], this.r_map[i], i), this.W * (i % this.GameSize) + this.W, 
            this.W * (i / this.GameSize) + this.W, this.W, this.W, this);

          this.x1 = x; this.y1 = y;
          this.Select_first = true;
        }
        
      }
      
    }
  }