学了3*3的拼图游戏,记录一下顺便理下思路

工具  eclipse

该拼图游戏为窗体程序,需要new 一个窗体对象,并设置窗体的相关属性

需要设置窗体的大小,位置,可见性 setVisiable ,以及点击关闭窗体程序

package game;
import java.awt.BorderLayout;
 import java.awt.Color;import javax.swing.ImageIcon;
 import javax.swing.JButton;
 import javax.swing.JFrame;
 import javax.swing.JPanel;public class GameFrame {
    public static void main(String[] args) {
         // TODO Auto-generated method stub
         JFrame frame = new JFrame();
         frame.setTitle("拼图游戏");
         frame.setSize(310,340);
         //设置窗体相对谁进行定位,若为null,则相对电脑显示屏进行定位,并且居中显示
         frame.setLocationRelativeTo(null);
         frame.setResizable(false);//设置窗体不可改变大小
         //窗体关闭时结束程序
         frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    
         frame.setVisible(true);//设置窗体可见    }
}

将面板类与业务逻辑写入一个类中

首先定义

public class GamePanel extends JPanel {
     private int n;//n代表几乘几    
     private JButton[] btns;//按钮代表拼图中的每个移动的格子
     private ImageIcon[] icons;//按钮中的图片
     
     public GamePanel(){//构造方法,在new对象时自动调用一次
         n = 3;
         setLayout(new GridLayout(n,n));//使用网格布局
         
         btns = new JButton[n*n];//初始格子数(n*n)
         icons = new ImageIcon[n*n];
         //两道初始化,先初始化容器数量,再初始化内容
         //初始化“容器”中各个图片
         for(int i = 0;i<icons.length-1;i++){ 
             icons[i] = new ImageIcon("pic_"+i+".jpg");
         }
         icons[icons.length-1] = null;//最后一个为空
        //给每个按钮指定图片,此时按钮上的图片是固定且正确的
         for(int i = 0;i<btns.length;i++){
             btns[i] = new JButton(icons[i]);//创建按钮时指定图片
             add(btns[i]);        }
         
     }
     }