基于Java的打字母游戏设计与实现
2019-09-19伍涛兰全祥
伍涛 兰全祥
摘要:为了提高Java程序设计的趣味性,切实锻炼Java程序设计能力,实现了一个打字母游戏。基于Java的打字母游戏采用Java的图形图像技术、键盘监听、多线程以及JDBC等技术实现了难度设置、排行榜、分数存储等功能。对打字母游戏进行了功能设计与分析,详细介绍了各个功能模块的实现。该游戏能提高Java编程的趣味性,还能在Java事件处理、多线程、JDBC以及Java Swing等知识的教学中起到一定的辅助作用,促进学生学习积极性。
关键词:打字母;JDBC;多线程;游戏;事件处理
中图分类号:TP311.1 文献标识码:A
文章编号:1009-3044(2019)20-0087-03
开放科学(资源服务)标识码(OSID):
1 背景
打字母游戏一款休闲益智小游戏,玩家通过键盘点击相应按钮消除界面中对应的下落字母。游戏规则如下:当玩家键入的字符与下落字母一致,则消除该字母,并且积分加1;若不一致,则下落字母不消除;若下落字母未被消除,且落出界面,则积分减1。当玩家游戏时间为0(默认为100s)或者分数扣减为0(默认为50分),则游戏结束。
开发人员可以通过Java提供的java.awt包、java.swing包来进行图形界面设计[1]。本游戏在Java Swing 的基础上,利用Java的图形化界面和图形图像绘制来实现游戏界面、字母、积分以及时间的绘制,使用键盘监听来实现玩家操作监听,使用多线程技术实现字母下落和计时,使用JDBC[2]来存储玩家积分和排行榜功能。
2 总体设计
2.1 功能设计
通过对打字母游戏的游戏规则进行分析,将实现如图1所示功能。
1)开始游戏
点击开始游戏之后,启动游戏窗口。游戏进行初始化,随机生成n个字母,并随时监听玩家输入。使用多线程进行窗口重绘以及倒计时。
2)排行榜
在游戏开始之前,玩家可以查看排行榜;在游戏结束之后,玩家输入自己的名字并查看排行榜。排行榜中的数据通过JDBC从数据库中进行读取会绘制在窗口中。
3)难度设置
玩家可以通过数遍选择不同的难度。游戏难度分为高级(每次下落15个字母)、中级(每次下落10个字母)、初级(每次下落5个字母)三个级别。玩家也可以通过输入字母下落个数自定义游戏难度。
4)退出游戏
点击界面中退出游戏按钮或窗口上的关闭按钮可以退出游戏。
2.2 数据库设计
本游戏使用MySQL数据库对玩家分数进行存储。在MySQL数据库中建立数据库Game,并在该数据库中建立player表,用于存储玩家信息,数据表信息如表1所示。
2.3 结构设计
通过对游戏功能模块进行分析,对游戏所需对象进行抽象和封装,有如图2所示类图。
3 游戏实现
3.1 游戏初始界面
游戏初始化阶段将生成游戏初始界面。该界面中添加了分别是开始游戏、排行榜、难度选择、退出游戏四个按钮,并为每个按钮设置监听事件。玩家通过点击相应按钮进行不同的功能操作。
3.2 游戏难度设置
玩家通过点击初始界面中的难度设置,进入难度选择界面。该界面中添加四个按钮,分别为高级、中级、初级和自定义,并为每个按钮设置监听事件。当玩家点击前三个按钮时,程序会将默认值传给ballCount;当用户点击自定义时游戏,将会显示一个输入框供玩家出入字母个数,并将值传给ballCount。游戏开始后,程序将根据ballCount的值生成字母个数。代码如下:
3.3.3 字母下落
CharPanel类通过Runnable接口中的run()方法执行Thread.sleep(30)来控制重绘时间。run()方法每隔30毫秒执行一次repaint()方法,每执行一次该方法中字母的y坐标值加上speed(初始值为1),从而实现字母下落效果[3]。另外,设置计数器count,每调用一次paint()方法,则count加1;当count=5000时,speed加1,并将count置为0,从而实现字母加速下落。代码如下:
3.3.4 消除字母并计分
在字母向下落的过程中,通过对游戏窗口进行键盘监听[4]实现按键消除字母功能。当监听到键盘事件时,CharPanel.count值加1,然后判断匹配下落字母是否包含玩家键入字母,若包含则对应的下落字母消失,并重新生成该字母的坐标值(其中x值为1-500内的随机值,y值为零)和内容(随机生成),同时right值和score值加1。当下落字母中出现多个相同字母时,消除最下面的字母。代码实现如下:
3.3.5 排行榜
当游戏结束之后,将显示一个输入框供玩家输入姓名。定义一个玩家信息类User,游戏结束后程序将获取当前游戏分数、正确数right、总数count与玩家姓名,并通过UserDao类的接口将数据存入数据库中[5]。代码实现如下:
当用户点击排行榜进行查看时,程序通过SQL查询语句,将数据库中的信息读出,然后使用Graphics重写paint方法绘制在界面上,排行榜效果图如图5所示。
4 结束语
基于Java的打字母游戏设计与实现使用了Java的键盘监听、鼠标点击、图形化界面和图形图像绘制、多线程以及JDBC等知识,实现了难度设置、排行榜、分数存储等功能。
参考文献:
[1] 苟雨晴, 兰全祥. 基于Java的拼图游戏设计与实现[J]. 电脑知识与技术, 2019,15(2): 45-47.
[2] 杨廷发, 兰全祥. 基于问题解决的JDBC教学方法改革和探讨[J]. 赤峰学院学报: 自然科学版,2018, 34(12):148-151.
[3] 张会. 基于Java的指法练习小游戏的设计与实现[J]. 电脑知识与技术, 2017,13(32):85-86, 96.
[4] 潘国荣. Java中的常见事件及处理探究[J]. 电脑知识与技术, 2018, 14(29):125-126, 131.
[5] 胡蕊蕊. Java Web程序運用中泛型DAO的作用[J]. 电子测试, 2017(4):46,49.
【通联编辑:谢媛媛】