GameHuaRongDao.java

GameHuaRongDao.java  华容道

package game;import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Random;import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;/*** 2023 * 2023 - 2022 * 2022* * 2023 * 2023 - 2022 * 2022* = (2022 + 1) * 2023 - 2022 * 2022* = 2022 * 2023 + 2023 - 2022 * 2022* = 2022 * (2023 - 2022) + 2023* = 2022 + 2023* = 4045* * @author ZengWenFeng* @email 117791303@qq.com* @mobile 13805029595*/
public class GameHuaRongDao extends JFrame
{private static final long serialVersionUID = 6877626593466163280L;private int[][] datas = {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}, {13, 14, 15, 0}};private int[][] winArr = {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}, {13, 14, 15, 0}};//定义两个元素获取到0号元素的位置int x0;int y0;private JButton btnWx;private JButton btnUp;private JButton btnDown;private JButton btnLeft;private JButton btnRight;private JButton btnHelp;private JButton btnReset;private JLabel lblInfo;private JPanel jPanel;public static String PATH_IMAGE;//构造方法public GameHuaRongDao(){//E:/PRJ_J2EE/PrjFlexJava/WebContent/WEB-INF/classes/game20230226_2/String pathImage = GameHuaRongDao.class.getResource("").getPath();pathImage = pathImage.substring(1);
//		pathImage = "D:/jre/";PATH_IMAGE = pathImage + "image/";System.out.println(pathImage);//窗体初始化设置initApp();//打乱图片reset();//窗体上的组件设置显示initUi();//添加按钮事件addEvent();//this.setVisible(true);}//判断是否成功public boolean isWin(){//for (int i = 0; i < datas.length; i++){for (int j = 0; j < datas[i].length; j++){if (datas[i][j] != winArr[i][j]){return false;}}}//return true;}//成功消息方法public void View(){JOptionPane.showMessageDialog(this, "游戏胜利!!!");}//成功方法public void sucess(){//datas = new int[][]{{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}, {13, 14, 15, 16}};//btnUp.setEnabled(false);btnDown.setEnabled(false);btnLeft.setEnabled(false);btnRight.setEnabled(false);}//重新绘制面板方法public void rePaint(){//把面板上的组件清空jPanel.removeAll();//重新绘制for (int i = 0; i < datas.length; i++){for (int j = 0; j < datas[i].length; j++){JLabel picture = new JLabel(new ImageIcon(PATH_IMAGE + datas[i][j] + ".png"));picture.setBounds(90 * j, 90 * i, 90, 90);jPanel.add(picture);}}//this.add(jPanel);//再添加上去jPanel.repaint();}//给按钮添加事件public void addEvent(){btnUp.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){
//                System.out.println("上");//判断边界if (x0 == 3){return;}//交换元素位置datas[x0][y0] = datas[x0 + 1][y0];datas[x0 + 1][y0] = 0;x0 += 1;//判断是否成功if (isWin()){sucess();}//重新绘制面板rePaint();//for (int i = 0; i < datas.length; i++){for (int j = 0; j < datas[i].length; j++){System.out.print(datas[i][j] + " ");}}//System.out.println("");}});btnDown.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){//判断边界if (x0 == 0){return;}//交换元素位置datas[x0][y0] = datas[x0 - 1][y0];datas[x0 - 1][y0] = 0;x0 -= 1;//判断是否成功if (isWin()){sucess();}//重新绘制面板rePaint();//for (int i = 0; i < datas.length; i++){for (int j = 0; j < datas[i].length; j++){System.out.print(datas[i][j] + " ");}}//System.out.println("");}});btnLeft.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){//判断边界if (y0 == 3){return;}//交换元素位置datas[x0][y0] = datas[x0][y0 + 1];datas[x0][y0 + 1] = 0;y0 += 1;//if (isWin()){sucess();}//重新绘制面板rePaint();//判断是否成功for (int i = 0; i < datas.length; i++){for (int j = 0; j < datas[i].length; j++){System.out.print(datas[i][j] + " ");}}//System.out.println("");}});btnRight.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){//判断边界if (y0 == 0){return;}//交换元素位置datas[x0][y0] = datas[x0][y0 - 1];datas[x0][y0 - 1] = 0;y0 -= 1;//判断是否成功if (isWin()){sucess();}//重新绘制面板rePaint();for (int i = 0; i < datas.length; i++){for (int j = 0; j < datas[i].length; j++){System.out.print(datas[i][j] + " ");}}//System.out.println("");}});btnHelp.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){//直接成功sucess();//重绘面板rePaint();//成功消息框显示View();for (int i = 0; i < datas.length; i++){for (int j = 0; j < datas[i].length; j++){System.out.print(datas[i][j] + " ");}}//System.out.println("");}});btnReset.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){//datas = new int[][]{{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}, {13, 14, 15, 0}};reset();rePaint();//btnUp.setEnabled(true);btnDown.setEnabled(true);btnLeft.setEnabled(true);btnRight.setEnabled(true);}});}//编写打乱二维数组的方法public void reset(){//Random rd = new Random();//for (int i = 0; i < datas.length; i++){for (int j = 0; j < datas[i].length; j++){int x = rd.nextInt(datas.length);int y = rd.nextInt(datas[i].length);int temp = datas[i][j];datas[i][j] = datas[x][y];datas[x][y] = temp;}}//wc: for (int i = 0; i < datas.length; i++){for (int j = 0; j < datas[i].length; j++){if (datas[i][j] == 0){x0 = i;y0 = j;break wc;}}}System.out.println("datas ============");for (int i = 0; i < datas.length; i++){for (int j = 0; j < datas[i].length; j++){System.out.print(datas[i][j]);System.out.print("  ");}System.out.println();}}//组件设置public void initUi(){//标题设置JLabel title = new JLabel(new ImageIcon(PATH_IMAGE + "title.png"));title.setBounds(354, 27, 232, 57);this.add(title);//游戏面板设置jPanel = new JPanel();jPanel.setBounds(150, 114, 360, 360);jPanel.setLayout(null);//把图片放进去   【像素90x90】 1 - 15数字图片for (int i = 0; i < datas.length; i++){for (int j = 0; j < datas[i].length; j++){JLabel picture = new JLabel(new ImageIcon(PATH_IMAGE + datas[i][j] + ".png"));picture.setBounds(90 * j, 90 * i, 90, 90);jPanel.add(picture);}}this.add(jPanel);//btnWx = new JButton(new ImageIcon(PATH_IMAGE + "wx_150x150.png"));btnWx.setBounds(680, 10, 150, 150);this.add(btnWx);//上下左右按钮【 57 x 57的像素】btnUp = new JButton(new ImageIcon(PATH_IMAGE + "shang.png"));btnUp.setBounds(732, 165, 57, 57);this.add(btnUp);btnDown = new JButton(new ImageIcon(PATH_IMAGE + "xia.png"));btnDown.setBounds(732, 247, 57, 57);this.add(btnDown);btnLeft = new JButton(new ImageIcon(PATH_IMAGE + "zuo.png"));btnLeft.setBounds(650, 247, 57, 57);this.add(btnLeft);btnRight = new JButton(new ImageIcon(PATH_IMAGE + "you.png"));btnRight.setBounds(813, 247, 57, 57);this.add(btnRight);//求助、重置按钮  【 108 x 45的像素】btnHelp = new JButton(new ImageIcon(PATH_IMAGE + "qiuzhu.png"));btnHelp.setBounds(626, 344, 108, 45);this.add(btnHelp);btnReset = new JButton(new ImageIcon(PATH_IMAGE + "chongzhi.png"));btnReset.setBounds(786, 344, 108, 45);this.add(btnReset);lblInfo = new JLabel();lblInfo.setBounds(580, 400, 400, 120);lblInfo.setFont(new java.awt.Font("Default", 1, 27));lblInfo.setForeground(Color.red);lblInfo.setText("<html><body>" + "TEL&WX:13805029595" + "<br>" + "曾小帅" + "<br>" + "117791303@qq.com" + "<body></html>");this.add(lblInfo);//背景设置JLabel background = new JLabel(new ImageIcon(PATH_IMAGE + "background.png"));background.setBounds(0, 0, 960, 530);this.add(background);}//显示窗体方法public void initApp(){this.setTitle("Hua Rong Dao");this.setSize(960, 565);this.setDefaultCloseOperation(3);this.setLayout(null);this.setLocationRelativeTo(null);this.setAlwaysOnTop(true);this.setResizable(false);}public static void main(String[] args){new GameHuaRongDao();}}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/636442.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

微信小程序入驻腾讯位置服务平台入门介绍及使用限制

入驻腾讯位置服务平台 登陆腾讯位置服务官网 lbs.qq.com&#xff0c;支持QQ、微信、手机号注册账号。 第一步&#xff0c;点击官网右上角“登陆”按钮。 第二步&#xff0c;点击后页面有弹框&#xff1a;系统支持 微信、QQ、手机号登录&#xff0c;可以任选一种进行后续操作&am…

112 arcpy 发布 mxd地图文件 到 arcgis服务器 为 地图服务

前言 此文档主要是记录一下 最近的一次机遇 arcpy 来发布 地图文件到 arcgis服务器 上面 arcpy 主要是来自于 ArcGIS_Desktop_105_154030.zip 安装之后会在 python 的安装目录 安装另外的一份带 arcgis 的 python 环境, 然后 本文相关类库 也是基于 这个 arcpy 的 python 环境…

《QT实用小工具·三十四》Qt/QML使用WebEngine展示的百度ECharts图表Demo

1、概述 源码放在文章末尾 该项目实现了百度ECharts图表的样式&#xff0c;效果demo如下所示&#xff1a; 项目部分代码如下所示&#xff1a; #include <QGuiApplication> #include <QQmlApplicationEngine> #include <QtWebEngine>int main(int argc, ch…

【Web】AFCTF 2021 题解(部分)

目录 BABY_CSP search secret google authenticator 随便做做&#xff0c;环境是NSS上的 BABY_CSP CSP绕过_script-src self-CSDN博客 CSP指令值 *&#xff1a; 星号表示允许任何URL资源&#xff0c;没有限制&#xff1b; self&#xff1a; 表示仅允许来自同源&#xff…

【C语言】——内存函数的使用及模拟实现

【C语言】——内存函数的使用及模拟实现 前言一、 m e m c p y memcpy memcpy 函数1.1、函数功能&#xff08;1&#xff09;函数名理解&#xff08;2&#xff09;函数介绍 1.2、函数的使用1.3、函数的模拟实现 二、 m e m m o v e memmove memmove 函数2.1、函数功能2.2、函数的…

【论文阅读】Attention is all you need

摘要 主要的序列转换模型是基于复杂的循环或卷积神经网络&#xff0c;其中包括一个编码器和一个解码器。性能最好的模型还通过一种注意力机制将编码器和解码器连接起来。我们提出了一种新的简单的网络架构&#xff0c;Transformer&#xff0c;完全基于注意机制&#xff0c;完全…

请编写函数fun,它的功能是:求出1到1000之内能被7或11整除、但不能同时被7和11整除的所有整数并将它们放在a所指的数组中,通过n返回这些数的个数。

本文收录于专栏:算法之翼 https://blog.csdn.net/weixin_52908342/category_10943144.html 订阅后本专栏全部文章可见。 本文含有题目的题干、解题思路、解题思路、解题代码、代码解析。本文分别包含C语言、C++、Java、Python四种语言的解法和详细的解析。 题干 请编写函数fu…

PICkit 3 v3.10中的 Device Family 识别不到芯片

1&#xff1a;现象描述 在使用 PICkit3烧写hex文件的时候&#xff0c;Device Family只有默认芯片&#xff0c;识别不到当前使用的芯片&#xff0c;导致报错“Device Error - hex file not loaded”&#xff0c;我当前使用的是 PIC16F1826芯片&#xff0c;默认不支持&#xff1…

Elastic 网络爬虫:为你的网站添加搜索功能

作者&#xff1a;来自 Elastic Lionel Palacin 为了演示如何使用 Elastic 网络爬虫&#xff0c;我们将以一个具体的网站为例&#xff0c;讲解如何在该网站上添加搜索功能。我们将探讨发现网站的方法&#xff0c;并利用 Elastic 网络爬虫提供的功能&#xff0c;以最佳方式准备待…

【Java笔记】如何创建自己的注解+注解怎么用于反射+SpringBoot常见注解

文章目录 0. 为什么SpringBoot要整这么多注解&#xff1f;1. 一些基础知识1.1 什么是注解1.2 Java内置注解1.2.1 作用在代码上的注解1.2.2 作用在注解的注解&#xff08;元注解&#xff09;1.2.3 Java 7之后的新注解 1.3 注解的作用1.4 如何实现一个自己的注解&#xff1f;1.4.…

【JVM系列】关于静态块、静态属性、构造块、构造方法的执行顺序

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

K-means和DBSCAN

目录 一、K-means和DBSCAN之间的主要区别 二、DBSCAN聚类算法 2.1DBSCAN聚类算法实现点集数据的聚类 2.2DBSCAN聚类算法实现鸢尾花数据集的聚类 三、K-means聚类算法 3.1K-means聚类算法实现随机数据的聚类 3.2K-means聚类算法实现鸢尾花数据集的聚类 一、K-means和DBSC…