【Java基础】018 -- 面向对象阶段项目上(拼图小游戏)

news2025/1/18 9:08:46

目录

拼图小游戏(GUI)

一、主界面分析

1、练习一:创建主界面1

2、练习二:创建主界面2(JFrame)

3、练习三:在游戏界面中添加菜单(JMenuBar)

①、菜单的制作

4、添加图片(JLabel)

①、初始化图片

②、调整图片的位置

③、添加其它图片

5、打乱图片的顺序

①、打乱一维数组中的数据

②、改写GameJFrame中的代码

6、事件

①、动作监听(点击、空格)

②、鼠标监听机制 -- MouseListener(四个动作 五个方法)

拼图游戏逻辑实现

7、美化界面

①、添加背景

②、添加边框

③、路径(一般推荐写相对路径)

④、小结

8、上下左右移动图片(移动空白块)

①、实现KeyListener

②、清除原本已经出现的所有图片

③、刷新界面

④、碰壁处理

⑤、其它方向同理

⑥、小结

9、查看完整图片

①、重写keyPressed方法

②、补充keyReleased方法

10、 作弊码

①、补充keyReleased方法

11、判断胜利

①、定义一个正确的二维数组

②、判断方法

③、显示胜利图标

④、补充keyReleased方法,判断胜利结束

12、记步功能

①、定义step变量,记录步数

②、定义一个JLabel对象管理文字组件

③、通过键盘监听事件的触发,让step++

13、重新开始

14、重新登录

15、关闭游戏

16、关于我们


拼图小游戏(GUI)

AWT包会有些兼容问题,不支持某些中文

在本次游戏的GUI开发中,我们将使用Swing包

一、主界面分析

这些东西统一称为组件,JFrame是一个组件、JMenuBar也是一个组件、等等

1、练习一:创建主界面1

主界面:

登录界面:

注册界面:

主入口:

2、练习二:创建主界面2(JFrame)

常用的六个界面设置:

设置界面关闭模式:

0:什么都不做

1:默认模式

2:需要所有界面全部设置才会有效,即最后一个界面关闭时,关闭虚拟机

3:只要关闭其中一个界面就会关闭虚拟机

以主界面GameJFrame为例:

3、练习三:在游戏界面中添加菜单(JMenuBar)

①、菜单的制作

Ctrl + Alt + M:方法抽取

初始化菜单:

4、添加图片(JLabel)

Ctrl + N:按名字搜索类

Ctrl + F12:显示当前文件结构

①、初始化图片

②、调整图片的位置

隐藏容器:不需要我们自己创建,它是JFrame内部自己的东西

③、添加其它图片

Ctrl + Shift + Alt + J:批量修改同名变量

④、回顾

5、打乱图片的顺序

用二维数组更方便

①、打乱一维数组中的数据

示例代码:

②、改写GameJFrame中的代码

6、事件

①、动作监听(点击、空格)

创建一个按钮对象:

按钮动作监听的三种方式:

(1)、实现类

(2)、匿名内部类(Android开发中大量碰到过)

(3)、让当前的界面类implements ActionListener,然后去重写方法

②、鼠标监听机制 -- MouseListener(四个动作 五个方法)

③、键盘监听机制 - KeyListener

拼图游戏逻辑实现

7、美化界面

①、添加背景

②、添加边框

bevelType:

  • 0,让图片凸起来(BeverlBorder.RAISED)
  • 1,让图片凹下去(BeverlBorder.LOWERED)

③、路径(一般推荐写相对路径)

④、小结

8、上下左右移动图片(移动空白块)

①、实现KeyListener

让当前界面去实现KeyListener,重写监听方法

②、清除原本已经出现的所有图片

③、刷新界面

④、碰壁处理

⑤、其它方向同理

⑥、小结

9、查看完整图片

①、重写keyPressed方法

②、补充keyReleased方法

10、 作弊码

①、补充keyReleased方法

11、判断胜利

①、定义一个正确的二维数组

②、判断方法

判断data数组中的数据是否跟win数组中相同

③、显示胜利图标

④、补充keyReleased方法,判断胜利结束

12、记步功能

①、定义step变量,记录步数

②、定义一个JLabel对象管理文字组件

③、通过键盘监听事件的触发,让step++

13、重新开始

①、实现接口

②、绑定事件

③、实现事件逻辑

④、实现重新开始

14、重新登录

15、关闭游戏

16、关于我们

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

传奇开服架设要具备什么条件

传奇开服架设要具备什么条件 新手如果想开服的话因具备哪些条件?我来为您解答 1.传奇SF开服的话你要清楚 具体的有哪些步骤 需要的哪些东西 自己一定要先了解清楚!因为这行的话 PZ比我们IDC服务器商都还要多。 {开服的话一定要了解清楚开传奇的一个具…

python(15)--函数设计

前言 函数是可重用的程序代码块。 函数的作用,不仅可以实现代码的复用,还可以保证修改函数的代码时,所有调用该函数的地方都能得到体现。目前我已知函数的作用是:对代码实现了封装、函数调用、传递参数、返回计算结果等。 正文 …

可控硅原理(单向可控硅和双向可控硅)

晶闸管(Thyristor)又叫可控硅,按照其工作特性又可分单向可控硅(SCR)、双向可控硅(TRIAC)。其中双向可控硅又分四象限双向可控硅和三象限双向可控硅。同时可控硅又有绝缘与非绝缘两大类,如ST的可控硅用BT名称后的“A”、与“B”来区分绝缘与非绝缘。 …

SpringCloud(18):Sentinel流控降级入门

Sentinel本地应用流控降级实现分为三步: 创建本地应用搭建本地Sentinel控制台本地应用接入本地Sentinel控制台1 本地应用创建 整体流程分析 创建springboot项目在项目的pom.xml文件中引入sentinel-core的依赖坐标创建TestController,定义使用限流规则…

java面向对象

3.面向对象 3.1 类和对象 public class Main{public static void main(String[] args) { /* 1.面向对象学习的三条主线1.1 类的结构:属性、方法、构造器、代码块、内部类1.2 面向对象的三大特征:封装性、继承性、多态性1.3 其他关键字:this…

当我把ChatGPT机器人拉到微信群里,群友都玩疯了!!!

大家好呀,我是飘渺!最近ChatGPT可谓是火出天际,人工智能领域的股票最近都被这家伙带的一路狂飙,如果到现在你都没听过或使用过的话那你可能是有点out了。今天的文章并不打算介绍ChatGPT,而是要带大家玩一件好玩的事。将…

泰克示波器采样率问题解答

1. 怎样选择示波器的采样率?采样率通常由带宽决定。高斯响应的泰克示波器通常而言采样率需要是带宽的 4 倍或更高。2. 选择具有最大额定采样率的示波器, 足以提供示波器的额定实时带宽吗?示波器的最大额定采样率与其实时带宽密切相关。 简单来讲,“实时”表示在单…

【C++】C++入门 类与对象(一)

类与对象(一)一、类的引入二、类的定义1、类的两种定义方式:2、成员变量命名规则的建议:三、类的访问限定符及封装1、访问限定符2、封装四、类的实例化1、类的实例化概念2、类对象的大小的计算五、this指针this指针的特性一、类的…

1.Redis【介绍与安装】

1.常用数据库介绍 mysql的表类型[表引擎.存储引擎],memory表结构和表数据分开存储的,表结构保存在硬盘中,表数据保存在内存中memcache是一款软件,可以使用键值对的格式保存数据到内存中redis是意大利的工程师开发的开源免费的告诉缓存数据库,需要注意的是作者本身只开发了linu…

1 Flutter UI Container和 Text 和图片组件

一 Text 组件Text 文本组件的一些属性如下body: const Text("this is leonardo fibonacci",// 文本对齐的方式textAlign: TextAlign.center,// 文本方向textDirection: TextDirection.rtl,// 字体显示最大的行数maxLines: 2,// 文字超出屏幕之后的显示方式 ellipsi…

Postgresql中null值和空字符串

NULL和空字符串不同数据库的表现 null和空字符串在不同的数据库中表现不一样,找了一张图,可以很清晰的对比了解。 首先null不是一个空字符串,也不是一个为零的值,上图,Oracle将NULL和空字符串都视为NULL。PostgreSQL…

UDP协议详解

目录 前言: 再谈协议 UDP协议 比较知名的校验和 小结: 前言: UDP和TCP作为传输层非常知名的两个协议,那么将数据从应用层到传输层数据是怎样进行打包的?具体都会增加一些什么样的报头,下面内容详细介绍…

洛谷——P1077 摆花

【题目描述】 小明的花店新开张,为了吸引顾客,他想在花店的门口摆上一排花,共 m 盆。通过调查顾客的喜好,小明列出了顾客最喜欢的 n 种花,从 1 到 n 标号。为了在门口展出更多种花,规定第 i 种花不能超过 …

快捷键被占用了,这能忍吗?赶紧使用 OpenArk 找出元凶并干掉它!!!

文章目录一、 问题:快捷键被占用了导致影响工作效率二、OpenArk2.1 OpenArk简介功能发布官方链接2.2 下载OpenArk2.3 运行OpenArk2.4 被占用的热键元凶到底是谁?三、总结一、 问题:快捷键被占用了导致影响工作效率 你是否遇到过,…

用ChatGPT构建网络设备表,并根据设备关系生成网络拓扑

构造一个数据表,存储包括交换机、路由器、防火墙、入侵检测、上网行为管理等设备的编号、序列号、IP、MAC、访问地址、用户名、密码、管理员、物理位置、上联设备ip等信息下面是一个示例数据表:Device IDSerial NumberIPMACAccess URLUsernamePasswordAd…

一文教会你如何选择远程桌面(五大主流远程软件全面讲解)

写在前面 作为程序员的我们,随时随地写代码改代码是我们的日常。刚回到家,就被老板、产品经理cue是常有的事。基于这种情况,一般都会随身携带电脑,随时备战,不过每天背着电脑上下班非常不方便。因此资深程序员的解决方…

高通开发系列 - linux kernel更新msm-3.18升至msm-4.9

By: fulinux E-mail: fulinux@sina.com Blog: https://blog.csdn.net/fulinus 喜欢的盆友欢迎点赞和订阅! 你的喜欢就是我写作的动力! 目录 linux kernel更新msm-3.18升至msm-4.9第一周处理的内容:第二周处理的内容第三周处理的内容linux kernel更新msm-3.18升至msm-4.9 第…

洗地机怎么选?洗地机品牌排行榜

洗地机的出现不仅能高效的清洁地面还能节省我们做家务的时间,对于上班族、有宠物的家庭以及宝妈来说简直不要太方便;目前市面上的洗地机有分有线款和无线款,无线款会比有线款操作更加方便;洗地机怎么选,其实洗地机的清洁能力主要是看吸力大小…

C++:map和set的认识和简单使用/关联式容器

关联式容器 关联式容器即是用来存储数据的&#xff0c;并且存储的是<Key&#xff0c;Value>结构的键值对&#xff0c;在数据检索时效率比序列式容器高。 序列式容器也就是vector、list、queue等容器&#xff0c;因为其底层为线性序列的数据结构&#xff0c;里面存储的是…

虹科案例 | 对症下药,零售行业BI解决方案及实操案例!

数据源多难以整合&#xff1f; 无法实时访问数据&#xff1f; 数据分析难、价值共享难&#xff1f; 面对大量的数据&#xff0c;企业愈发头疼&#xff0c;尤其是零售行业。虹科Domo商业智能分析工具“对症下药”&#xff0c;为零售企业海量数据问题提供解决方案。 一、零售行业…