论文部分内容阅读
摘 要:文章基于JAVA的拼图游戏开发进行设计,主要运用JAVA中绘制图形界面的Swing包进行拼图游戏界面设计,通过设计图片移动算法实现拼图游戏主体功能滑块移动的实现以获得图片按钮移动功能。在进行菜单功能设计时,使用了监听方法使得菜单按钮能够正常使用,并使用lang包中的异常处理类以及线程类进一步优化拼图游戏界面,最后提出了一些界面算法优化的问题。
关键词:Swing包;拼图游戏;图片移动算法;lang包
中图分类号:TP312 文献标识码:A 文章编号:1674-1064(2021)03-044-02
DOI:10.12310/j.issn.1674-1064.2021.03.020
拼图游戏的趣味源远流长[1]。拼图游戏深受大众喜爱,不仅有趣休闲,还能锻炼人的思维能力。随着计算机、手机的普及,人们已不再满足于线下拼图游戏。从玩家角度来看,线上拼图游戏不仅操作方便,而且可以通过提升游戏难度激起读者的挑战心。拼图游戏对儿童的成长十分有利,在娱乐游戏盛行的游戏市场,拼图等益智类小游戏似乎更适合儿童使用。从编程初学者来说,课堂上以做拼图游戏项目为中心进行有关JAVA的学习,更加吸引人,有利于提高学生的学习兴趣[2],进而对JAVA进行深入研究[3]。
1 JAVA Swing简介
其是用来设计界面的工具包,是对AWT包的扩展,组件以J开头,并且Swing界面在不同平台上的外观完全一样,真正做到了平台独立,可以用来对拼图游戏的图形用户界面进行设计[4-5]。
2 拼图游戏的设计过程及功能验证
2.1 拼图游戏设计流程
首先,采用从整体到局部的面向对象设计方法,以拼图游戏软件功能为核心,对拼图游戏软件进行分析、设计、实现。
其中,搭建游戏界面使用的是容器知识点,容器使用顶级容器和中层容器进行搭建。其次,使用布局进行界面划分,拼图需要把图分成等分的几部分。要使得拼图游戏能够进行,就必须使各个部分的图片发生交换,这时需要设计图片交换算法。
最后,对功能部分进行设置。首先设置的就是菜单栏,以及菜单栏中的菜单项,包括菜单、菜单中的开始、结束、查看背景图片以及选择等五个按钮键。而在程序设计时,分四个部分写程序,分别为图片切割程序、顶级容器界面、中级容器界面、按钮界面。然后就是计算时间以及步数。计算时间以及步数需要用到线程知识,注意一下小细节,就是需要设置更换图片以及进行等级后清零的设置,拼图游戏设计流程如图1所示。
2.2 拼图游戏界面设计
首先进行整体面板布局。直接使用Jframe类下的setTitle()、setDefaultCloseOpearation()、setLocationRelativeTo()、setSize()、setResizable()方法分别设置窗口的标题、关闭图标、在屏幕的位置、窗口大小以及是否由用户更改窗口的大小。然后创建中间容器,添加到顶层容器内,再创建基本组件,添加到中间容器内。整体界面搭建好后,对游戏界面进行布局,此次拼图游戏采用网格布局GridBayLayout,即将中间容器设置为表格布局,然后设置按钮的图片背景,最后添加按钮组件至中间容器。
其次,进行图片切割算法设计。使用图片切割方法cutImage,先创建相应的图片文件夹,放置原始图片至文件夹,然后调用方法,生成切割文件至相应目录。
在进行图片移动算法设计前,先用random随机生成器随机打乱图片的顺序。先创建放置图片顺序的随机数组,根据随机数组生成图片位置,创建按钮组件,并为按钮设置图表,添加按钮组件至中间容器Jpanel。实现按钮组件的移动,根据拼图游戏的规则,就是点击空白按钮相邻的图片按钮,使得空白按钮和图片按钮发生交换。移动算法设计的步骤:
按钮对象设计继承于JButton,使得其具有横纵坐标属性,主要用于判断空白按钮的周边按钮是否为邻近按钮;
获得空白按钮的横纵坐标;
获得点击按钮的横纵坐标;
判断点击按钮是否与空白按钮相邻[6]。
下一步进行菜单组件的绘制。首先创建菜单JMenu、菜单栏JMenubar以及菜单项JMenuItem,然后进行菜单各功能的设计。为了实现功能,对菜单和菜单项添加监听。
最后一步在设置时间和步数的显示前,先对菜单栏的开始和结束按钮功能进行设计。开始按钮可获得设置的图片及难度级别,进行图片切割,然后为按钮设置监听。而结束按钮则是当所有按钮的坐标位置和随机数组的位置相符时,则拼图成功,游戏结束。时间和步数就是设置两个菜单项,然后对其进行线程设置,能够使其在开始游戏时进行执行。而在开始后,能够重置时间与步数[7]。
2.3 拼图游戏功能实现及验证
在进行拼图游戏的过程中,程序運行结果框中出现了图片的原始顺序,但是在移动滑块的时候,并没有根据算法的基本思路运行,而是未完成拼图就显示了“拼图完成”的消息框。原算法的思路如下:随机打乱图片顺序,然后移动图片滑块,当图片滑块的顺序与按钮的顺序相同时,即按钮的顺序是0~9,而图片滑块的顺序是乱序。当乱序变成顺序,与按钮顺序一一对应时,则表示拼图完成,如图2所示。
在进行拼图游戏的过程中,时间与步数正常显示。
选择另一个能够正常进行拼图游戏的代码进行算法思路比较。
对比结果显示:数组维度的区别。
点击“菜单”下的“背景”,则背景图片正常显示。
点击“选择”,然后点击“图片更换”,最后点击“开始”,则此功能正常使用、无异常,并且时间与步数会清零。
点击“选择”,然后进行“等级”切换,点击“开始”,切换正常,并且时间与步数正常清零。
3 结语
目前,对于拼图游戏的开发并不局限于JAVA,还包括各类语言如C#、matlab等,不过主要以JAVA为主。但是,JAVA在开发拼图游戏时还存在一些算法优化问题:判断游戏是否结束的算法,以及图片问题:图片大小根据窗口大小进行缩放。
在开发JAVA的过程中,出现了必须要将窗口大小设置成图片大小的情况,当插入的图片大小不同时,怎么控制图片大小根据窗口大小进行调整呢?再者,判断拼图游戏完成的算法在思路上并未有什么问题,但是在实施的情况下,却出现了图片还未拼成原图就显示“拼图完成”的信息提示框。
根据第二个问题,对比了一个拼图游戏开发的代码,发现两者的区别在于数组维度的区别,两者都是通过位置对比的算法进行判断拼图是否完成。而通过二维数组进行位置对比时,游戏能够正常识别出拼图是否完成。而一维数组却不能识别,甚至出现任意位置都可显示拼图完成。
由于开发游戏时使用的是JAVA语言,所以这个拼图软件可以在很多平台上运行,比如PC端以及安卓系统等,在各个系统上都可兼容。
参考文献
[1] 宋爱新,桂鹏飞.基于MFC的数字拼图游戏设计与实现[J].智慧密集,2015(18):35-38.
[2] 刘立云,赵慧勤.基于自主探究理念的拼图教育游戏的设计开发[J].数字社区,2017(20):70-71.
[3] 余战秋.基于App Inventor的九宫格拼图游戏设计与实现[J].智慧密集,2017(18):34-36.
[4] 苟雨晴,兰全祥.基于Java的拼图游戏设计与实现[J].电脑知识与技术,2019,2(15):45-47.
[5] 秦鹏珍.基于Java的拼图游戏实现[J].电子技术与软件工程,2019(13),237-238.
[6] 张国荣.拼图游戏APP的设计与实现[J].电脑知识与技术,2019,3(15):1009-3044.
[7] 刘丹.基于Android的拼图游戏设计与实现[J].湖北理工学院学报,2019,6(35):2095-4565.
关键词:Swing包;拼图游戏;图片移动算法;lang包
中图分类号:TP312 文献标识码:A 文章编号:1674-1064(2021)03-044-02
DOI:10.12310/j.issn.1674-1064.2021.03.020
拼图游戏的趣味源远流长[1]。拼图游戏深受大众喜爱,不仅有趣休闲,还能锻炼人的思维能力。随着计算机、手机的普及,人们已不再满足于线下拼图游戏。从玩家角度来看,线上拼图游戏不仅操作方便,而且可以通过提升游戏难度激起读者的挑战心。拼图游戏对儿童的成长十分有利,在娱乐游戏盛行的游戏市场,拼图等益智类小游戏似乎更适合儿童使用。从编程初学者来说,课堂上以做拼图游戏项目为中心进行有关JAVA的学习,更加吸引人,有利于提高学生的学习兴趣[2],进而对JAVA进行深入研究[3]。
1 JAVA Swing简介
其是用来设计界面的工具包,是对AWT包的扩展,组件以J开头,并且Swing界面在不同平台上的外观完全一样,真正做到了平台独立,可以用来对拼图游戏的图形用户界面进行设计[4-5]。
2 拼图游戏的设计过程及功能验证
2.1 拼图游戏设计流程
首先,采用从整体到局部的面向对象设计方法,以拼图游戏软件功能为核心,对拼图游戏软件进行分析、设计、实现。
其中,搭建游戏界面使用的是容器知识点,容器使用顶级容器和中层容器进行搭建。其次,使用布局进行界面划分,拼图需要把图分成等分的几部分。要使得拼图游戏能够进行,就必须使各个部分的图片发生交换,这时需要设计图片交换算法。
最后,对功能部分进行设置。首先设置的就是菜单栏,以及菜单栏中的菜单项,包括菜单、菜单中的开始、结束、查看背景图片以及选择等五个按钮键。而在程序设计时,分四个部分写程序,分别为图片切割程序、顶级容器界面、中级容器界面、按钮界面。然后就是计算时间以及步数。计算时间以及步数需要用到线程知识,注意一下小细节,就是需要设置更换图片以及进行等级后清零的设置,拼图游戏设计流程如图1所示。
2.2 拼图游戏界面设计
首先进行整体面板布局。直接使用Jframe类下的setTitle()、setDefaultCloseOpearation()、setLocationRelativeTo()、setSize()、setResizable()方法分别设置窗口的标题、关闭图标、在屏幕的位置、窗口大小以及是否由用户更改窗口的大小。然后创建中间容器,添加到顶层容器内,再创建基本组件,添加到中间容器内。整体界面搭建好后,对游戏界面进行布局,此次拼图游戏采用网格布局GridBayLayout,即将中间容器设置为表格布局,然后设置按钮的图片背景,最后添加按钮组件至中间容器。
其次,进行图片切割算法设计。使用图片切割方法cutImage,先创建相应的图片文件夹,放置原始图片至文件夹,然后调用方法,生成切割文件至相应目录。
在进行图片移动算法设计前,先用random随机生成器随机打乱图片的顺序。先创建放置图片顺序的随机数组,根据随机数组生成图片位置,创建按钮组件,并为按钮设置图表,添加按钮组件至中间容器Jpanel。实现按钮组件的移动,根据拼图游戏的规则,就是点击空白按钮相邻的图片按钮,使得空白按钮和图片按钮发生交换。移动算法设计的步骤:
按钮对象设计继承于JButton,使得其具有横纵坐标属性,主要用于判断空白按钮的周边按钮是否为邻近按钮;
获得空白按钮的横纵坐标;
获得点击按钮的横纵坐标;
判断点击按钮是否与空白按钮相邻[6]。
下一步进行菜单组件的绘制。首先创建菜单JMenu、菜单栏JMenubar以及菜单项JMenuItem,然后进行菜单各功能的设计。为了实现功能,对菜单和菜单项添加监听。
最后一步在设置时间和步数的显示前,先对菜单栏的开始和结束按钮功能进行设计。开始按钮可获得设置的图片及难度级别,进行图片切割,然后为按钮设置监听。而结束按钮则是当所有按钮的坐标位置和随机数组的位置相符时,则拼图成功,游戏结束。时间和步数就是设置两个菜单项,然后对其进行线程设置,能够使其在开始游戏时进行执行。而在开始后,能够重置时间与步数[7]。
2.3 拼图游戏功能实现及验证
在进行拼图游戏的过程中,程序運行结果框中出现了图片的原始顺序,但是在移动滑块的时候,并没有根据算法的基本思路运行,而是未完成拼图就显示了“拼图完成”的消息框。原算法的思路如下:随机打乱图片顺序,然后移动图片滑块,当图片滑块的顺序与按钮的顺序相同时,即按钮的顺序是0~9,而图片滑块的顺序是乱序。当乱序变成顺序,与按钮顺序一一对应时,则表示拼图完成,如图2所示。
在进行拼图游戏的过程中,时间与步数正常显示。
选择另一个能够正常进行拼图游戏的代码进行算法思路比较。
对比结果显示:数组维度的区别。
点击“菜单”下的“背景”,则背景图片正常显示。
点击“选择”,然后点击“图片更换”,最后点击“开始”,则此功能正常使用、无异常,并且时间与步数会清零。
点击“选择”,然后进行“等级”切换,点击“开始”,切换正常,并且时间与步数正常清零。
3 结语
目前,对于拼图游戏的开发并不局限于JAVA,还包括各类语言如C#、matlab等,不过主要以JAVA为主。但是,JAVA在开发拼图游戏时还存在一些算法优化问题:判断游戏是否结束的算法,以及图片问题:图片大小根据窗口大小进行缩放。
在开发JAVA的过程中,出现了必须要将窗口大小设置成图片大小的情况,当插入的图片大小不同时,怎么控制图片大小根据窗口大小进行调整呢?再者,判断拼图游戏完成的算法在思路上并未有什么问题,但是在实施的情况下,却出现了图片还未拼成原图就显示“拼图完成”的信息提示框。
根据第二个问题,对比了一个拼图游戏开发的代码,发现两者的区别在于数组维度的区别,两者都是通过位置对比的算法进行判断拼图是否完成。而通过二维数组进行位置对比时,游戏能够正常识别出拼图是否完成。而一维数组却不能识别,甚至出现任意位置都可显示拼图完成。
由于开发游戏时使用的是JAVA语言,所以这个拼图软件可以在很多平台上运行,比如PC端以及安卓系统等,在各个系统上都可兼容。
参考文献
[1] 宋爱新,桂鹏飞.基于MFC的数字拼图游戏设计与实现[J].智慧密集,2015(18):35-38.
[2] 刘立云,赵慧勤.基于自主探究理念的拼图教育游戏的设计开发[J].数字社区,2017(20):70-71.
[3] 余战秋.基于App Inventor的九宫格拼图游戏设计与实现[J].智慧密集,2017(18):34-36.
[4] 苟雨晴,兰全祥.基于Java的拼图游戏设计与实现[J].电脑知识与技术,2019,2(15):45-47.
[5] 秦鹏珍.基于Java的拼图游戏实现[J].电子技术与软件工程,2019(13),237-238.
[6] 张国荣.拼图游戏APP的设计与实现[J].电脑知识与技术,2019,3(15):1009-3044.
[7] 刘丹.基于Android的拼图游戏设计与实现[J].湖北理工学院学报,2019,6(35):2095-4565.