⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 puzzlepad.java

📁 一个很简单的华容道小游戏
💻 JAVA
字号:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.*;
import java.util.Vector;
public class PuzzlePad extends JPanel implements ActionListener
{
  int rows ,colums;           
  int width,height;           
  SquarePoint point[][];      
  JButton block[][];          
  Vector vector;              
  int leftX=150,leftY=50;    
  public PuzzlePad(int r,int c,int w,int h)
    {
      setLayout(null);
      vector=new Vector();
      rows=r;
      colums=c;
      width=w;
      height=h;
      block=new JButton[rows][colums];
      point=new SquarePoint[rows][colums];
      for(int i=0;i<rows;i++)
         { 
          for(int j=0;j<colums;j++)
            {
               if((i==rows-1)&&(j==colums-1))
                  {
                  }
               else    
               {
                block[i][j]=new JButton();
                block[i][j].setSize(width,height);
                block[i][j].addActionListener(this);
                vector.add(block[i][j]);
               }
            }
         }
       for(int i=0;i<rows;i++)
         { 
          for(int j=0;j<colums;j++)
            {
              point[i][j]=new SquarePoint(150+j*width,50+i*height);
               if((i==rows-1)&&(j==colums-1))
                  {
                  }
               else
                  {
                   point[i][j].setBlock(block[i][j],this);
                 }
            }
         } 
    }

   public void actionPerformed(ActionEvent e)
    {
      JButton button=(JButton)e.getSource();
      int x=button.getBounds().x;
      int y=button.getBounds().y;
      int m=0,n=0;
      
      for(int i=0;i<rows;i++)
         { 
          for(int j=0;j<colums;j++)
           {
             if(point[i][j].getX()==x&&point[i][j].getY()==y)
                {
                  m=i;
                  n=j;                               
                }
           }
         }
       
       int 上=Math.max(0,m-1);
       int 下=Math.min(rows-1,m+1);
       int 左=Math.max(0,n-1);
       int 右=Math.min(colums-1,n+1);
       
       if(point[上][n].get有方块()==false)          
         {
           point[上][n].setBlock(button,this);
           point[m][n].set有方块(false);
         }
       else if(point[下][n].get有方块()==false)     
         {
           point[下][n].setBlock(button,this);
           point[m][n].set有方块(false);
         }
       else if(point[m][左].get有方块()==false)     
         {
           point[m][左].setBlock(button,this);
           point[m][n].set有方块(false);
         }
       else if(point[m][右].get有方块()==false)     
         {
           point[m][右].setBlock(button,this);
           point[m][n].set有方块(false);
         }
    }
  public void 随机排列数字()
    { 
       vector.removeAllElements();
       for(int i=0;i<rows;i++)
         { 
          for(int j=0;j<colums;j++)
            {
               if((i==rows-1)&&(j==colums-1))
                  {
                  }
               else
                  {
                     vector.add(block[i][j]);
                  }
            }
         }
      int i=1;
      while(vector.size()>0)
        {
          int n=(int)(Math.random()*vector.size());
          JButton b=(JButton)vector.elementAt(n);
          b.setText(""+i);
          b.setIcon(null);
         b.setBorder(BorderFactory.createLineBorder(Color.blue,3));//
          vector.remove(n);
          i++;
        }
        repaint();  
    }

 
  public void paintComponent(Graphics g)
    {
       super.paintComponent(g); 
       g.setColor(Color.red);
       g.fillRect(leftX,leftY,colums*width,rows*height);
         
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -