程序启动入口
import com.itDong.ui.GrameJFrame;
import com.itDong.ui.LoginJFrame;
import com.itDong.ui.RegisterJFrame;
public class APP {
public static void main(String[] agrs) {
//程序启动入口
//如果开启一个界面,就创建谁的对象就行
//new LoginJFrame();
new GrameJFrame();
//new RegisterJFrame();
}
}
GrameJFrame
package com.itDong.ui;
import javax.swing.*;
import javax.swing.border.BevelBorder;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.util.Random;
public class GrameJFrame extends JFrame implements KeyListener, ActionListener {
//规定:为游戏的主界面
//跟游戏相关的逻辑都在这个类中
//创建一个二维数组
//目的:用来管理数据
//加载图片的时候,会根据二维数组中的数据进行加载
int [][] data=new int[4][4];
//记录空白方块在二维数组中的位置
int x=0;
int y=0;
//定义一个变量,记录当前展示图片的路径
String path="E:\\IdeaProjects\\JavaLearn10-18\\image\\animal\\animal5\\";
//定义一个二维数组,存储正确的数据
int[][] win = {
{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12},
{13, 14, 15, 0}
};
//定义变量来统计步数
int step=0;
//创建选项下面的条目对象
JMenuItem replayItem=new JMenuItem("重新游戏");
JMenuItem reLoginItem=new JMenuItem("重新登陆");
JMenuItem closeItem=new JMenuItem("关闭游戏");
JMenuItem accountItem=new JMenuItem("公众号");
public GrameJFrame(){
//初始化界面
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;
}
/*
*
* 11 8 7 5 5 6 8 9
* 12 0 3 4 10 11 14 1
* 14 1 6 9 4 7 12 13
* 15 2 10 13 2 3(0没有换过来,而是直接跳过,10依然在)
*
* 【解决方法:删除4-给二维数组添加数据中的 else即可】
* 5 6 8 9 10 11 14 1 4 7 12 13 2 3 0 14
*
* */
//4-给二维数组添加数据
//遍历tempArr得到每