java扫雷游戏源代码java

java扫雷游戏源代码实验报告及JAVA源代碼毕业论文目录一系统开发平台3二设计要求32.1问题描述32.2输入要求32.3输出要求4三数据结构与算法描述43.1整体思路43.2所需数据结构及算法5四测试结果64.1测試输入及输出64.2测试中的问题及解决12五分析与讨论125.1测试结果分析125.2算法复杂性分析135.3探讨及改进13六附录(源代码)146.1class 7设计要求问题描述实现一个M*N的java扫雷遊戏源代码输入要求左键单击:在判断出不是雷的方块上按下左键,可以打开该方块如果方块上出现数字,则该数字表示其周 围3×3区域中的地雷数(一般为8个格子对于边块为5个格子,对于角块为3个格子所以扫雷中最大的数字为8);如果方块上为空(相当于0),则可鉯递 归地打开与空相邻的方块;如果不幸触雷则游戏结束。右键单击:在判断为地雷的方块上按下右键可以标记地雷(显示为小红旗)。重复两次操作可取消标记双击:同时按下左键和右键完成双击。当双击位置周围已标记雷数等于该位置数字时操作有效相当于对該数字周围未打开的方块均进行一次左键单击操作。地雷未标记完全时使用双击无效若数字周围有标错的地雷,则游戏结束输出要求鉯图形界面的形式输出游戏数据,如下图:数据结构与算法描述整体思路所需数据结构及算法数据结构记录类区的各个属性用到了二维数組算法点击到空白格子时递归的打开周围的八个格子用到了递归算法:测试结果测试输入及输出初级游戏中级游戏高级游戏自定义游戏对話框自定义游戏及游戏结束游戏胜利帮助关于测试中的问题及解决问题1:测试过程中发现地雷实际显示的位置和它应该显示的位置不同,正好沿着左上右下斜对角线对称;解决:由于坐标(ij)表示i行j列,i对应到屏幕上坐标为Y轴j对应到屏幕上坐标为X轴,所以造成了地雷實际显示的位置和它应该显示的位置不同发现这个问题后,将paint中的ij对调一下便得到了正确结果。问题2:由于线程中的stop()方法已不建议使鼡为了终止计时器线程,我设定了一个标记boolean flag用来控制线程的结束,flag=true时计时器线程不断+1,flag=false时计时器线程终止。测试过程中发现游戲开始后点击开始按钮,计时器总会显示为1而不是0;解决:由于对线程理解不足产生生这个问题的原因目前还不清楚,不过经过上网查詢后得到了解决办法由于计时器线程运行时使用了sleep方法,线程处于阻塞状态因此利用interrupt方法来中断线程,解决了这个问题分析与讨论測试结果分析由于题目的特殊性,没有测试数据具体的测试结果参见4.1 测试输入及输出。分析:多次测试结果显示程序运行正常无异常。算法复杂性分析由于点击到空白格子时递归的打开周围的八个格子用到了递归算法;算法复杂性:检查1层格子最多检查9个格子;检查2层格子最多检查25个格子;检查3层格子最多检查49个格子;检查4层格子最多检查81个格子;检查5层格子最多检查121个格子;……;检查N层格子最多检查(2N+1)2个格子;实际算法复杂性:O(N2)探讨及改进主要算法采用了递归的方法虽清晰易懂,但效率不高可以改为非递归的采用队列实现的算法,这样算法的效率有明显的提高扫雷区域内显示的数字是即时画上去的,可以采用图片填充的方法这样子界面更加美观,且容易更改堺面外观附录(源代码)class

我要回帖

更多关于 java扫雷游戏源代码 的文章

 

随机推荐