package Puzzlegame.com.wxj.ui;import javax.swing.*;
import javax.swing.border.BevelBorder;
import java.util.Random;public class GameJframe extends JFrame {
//游戏主界面
//创建一个二维数组//目的:管理数据//加载图片的时候,会根据二维数组中的数据进行加载
int [][] data=new int[4][4];
public GameJframe(){//初始化界面initJFrame();//初始化菜单initJmenuBar();//初始化数据(打乱)
initData();//初始化图片(根据打乱之后的结果去加载图片)initImage();//让界面显示出来this.setVisible(true);
}//初始化数据(打乱)private void initData() {//1.定义一个数组int []tempArr={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};//2.打乱数组中的数据顺序//遍历数组,得到每一个元素,拿着每一个元素跟随机索引上的数据交换Random r=new Random();for (int i = 0; i < tempArr.length; i++) {//获取到随机索引int index=r.nextInt(tempArr.length);
//拿着遍历到的每一个数据,跟随机索引上的数据进行交换。int temp=tempArr[i];tempArr[i]=tempArr[index];tempArr[index]=temp;}//5.给二维数组添加数据//解法一//遍历一维数组tempArr得到每一个元素,把每一个元素依次添加到二维数组中for (int i = 0; i < tempArr.length; i++) {data[i/4][i%4]=tempArr[i];}}//初始化图片//添加图片的时候,就需要按照二维数组中的数据添加图片private void initImage() {//路径分为两种;//绝对路径:一定是从盘符开始//相对路径:相对当前项目而言//细节://先加载的图片在上方,后加载的图片在下方//外循环for (int i = 0; i < 4; i++) {//内循环for (int j = 0; j < 4; j++) {//获取当前要加载图片的序号int num= data[i][j];//创建一个JLabel对象(管理容器)JLabel jLabel=new JLabel(new ImageIcon("F:\\javaEE\\src\\Puzzlegame\\com\\wxj\\ui\\image\\animal\\animal3\\"+num+".jpg"));//指定图片的位置jLabel.setBounds(105*j+83,105*i+134,105,105);//给图片添加边框jLabel.setBorder(new BevelBorder(1));//把管理容器添加到界面中this.getContentPane().add(jLabel);}}//添加背景图片JLabel background=new JLabel(new ImageIcon("F:\\javaEE\\src\\Puzzlegame\\com\\wxj\\ui\\image\\background.png"));background.setBounds(40,40,508,560);//把背景图片添加到界面当中this.getContentPane().add(background);}private void initJmenuBar() {//创建整个菜单对象JMenuBar jMenuBar=new JMenuBar();//创建菜单上的两个选项的对象(功能 关于我们)JMenu functionJMenu=new JMenu("功能");JMenu aboutJMenu=new JMenu("关于我们");
//创建选项下面的条目对象JMenuItem replayItem=new JMenuItem("重新游戏");JMenuItem reLoginItem=new JMenuItem("重新登录");JMenuItem closeItem=new JMenuItem("关闭游戏");JMenuItem accountItem=new JMenuItem("公众号");
//将每一个选项下面的条目添加到选项中functionJMenu.add(replayItem);functionJMenu.add(reLoginItem);functionJMenu.add(closeItem);aboutJMenu.add(accountItem);//将菜单里的两个选项添加到菜单当中jMenuBar.add(functionJMenu);jMenuBar.add(aboutJMenu);//给整个界面设置菜单this.setJMenuBar(jMenuBar);}//初始化界面private void initJFrame() {//设置界面的宽高this.setSize(603,680);//设置界面的标题this.setTitle("拼图单机版 V1.0");//设置界面置顶this.setAlwaysOnTop(true);//设置界面居中this.setLocationRelativeTo(null);//设置游戏的关闭模式this.setDefaultCloseOperation(3);//取消默认的居中放置,只有取消了才能按照xy轴的形式添加组件this.setLayout(null);}
}
运行之后为: