题目简介
参考Windows 2000/XP系统提供的扫雷游戏,模拟做了一个扫雷游戏程序, 增加以下功能:在主界面中添加一个菜单栏,菜单栏中包括游戏和帮助两个菜单,其中游戏菜单中设置初级、中级、高级、自定义、、扫雷英雄榜这几个菜单项,帮助菜单中设置游戏规则菜单项。主要实现了如下算法:单击某行某列后产生不在单击处引爆的地图。出现空格后引发递归的清空算法。
结对人的博客地址
http://www.cnblogs.com/FBean/p/4508957.html
代码地址
https://github.com/hutua/test3.git
结对分工情况
李建宾 负责MineGame.java、MineArea.java、BlockView.java、BlockView.java
韩 宁 负责LayMines.java、Record.java、ShowRecord.java、userDefine.java、ruleShow.java
结对实践过程
1、 LayMines类
LayMines对象使用随机算法制定MineArea对象中的哪些Block对象是雷,哪些对象不是雷,没有可现实的效果图。
1)成员变量
mineIcon用来存放一个格式为gif的图像。
2)方法
layMinesForBlock(Block[][],in)方法对参数指定的Block数组进行设置,其中int参数指定雷的数目,当指定Block数组中每个单元中的方块是雷时,就将该房快上的图标设置为mineIcon,当指定Block数组中每个单元中的方块不是雷时,就将该方块的名字设置为周围的雷的数目。
2、Record类
Record是javax。swing包中jDialog对话框的子类,并实现了ActionListener接口。Record创建的对象:record是MineArea类的成员之一,当用户扫雷成功时,该对象提供了保存成绩到文件的界面。
1)成员变量
·textName提供用户扫雷优胜者输入姓名
·用户单击”确定“按钮,可以保存成绩
2)方法
·actionPerformed(ActionEvent)方法是Record类实现的ActionListener接口中的方法,当用户单击”确定“按钮后,该方法被执行,所执行的操作就是获取用户输入的名字和用时然后调用writeRecord(String,String)方法将信息写入”英雄榜“中。
·writeRecord(String,String)方法负责将有关信息扫雷用时,扫雷级别,扫雷优胜者姓名等心思写入到”英雄榜“文件。
3、ShowRecord类
ShowRecord创建的对象负责提供显示成绩的界面,
ShowRecord是javax。swing包中JDialog对话框的子类,并实现了ActionListener接口。ShowReacord创建的对象showHeroRecord是MineGame类的成员之一,当用户选择查看"英雄榜“菜单项时,该对话框可见,提供了查看扫雷的最好成绩的界面。
1)成员变量
·File存放文件的引用
·用户单击”显示成绩“按钮,可以查看各个级别扫雷的最好成绩。
·用户单击”重新计分“按钮,可以将”英雄榜“中的成绩恢复为初始值。
2)方法
·actionPerformed(ActionEvent)方法是ShowRecord类实现的ActionListener接口中的方法,当用户单击”显示成绩“按钮后,该方法被执行,所执行的操作就是调用readAndShow()方法。
·readAndShow()方法负责读取存放在文件中的各个级别的扫雷最好成绩以及扫雷者姓名,并显示这些相关信息。
4、userDefine 类
userDefine是java.awt包中Rame框架的子类,并实现了ActionListener接口。userDefine创建的对像:usedefine是MineArea类的成员之一,当用户点击菜单栏中的游戏->自定义时,弹出界面,在界面的文本框中输入相应的数字。然后单击确定即可,或者单击取消退出界面。
1)成员变量
·行数,列数,雷数,分数:分别用来显示行数,列数,雷数,分数
·行数1,列数1,雷数1,分数1:用来自定义雷区的长度值,宽度值,所有的雷数值以及每赢一局所得的分数
·说明1,说明2 说明3,说明4:用来说明上述内容
·容器1,容器2,容器3 :用来装Label 和TextFiled,以方便布局
·确定,取消;单击“确定”后,如果输入的内容合法,就会实现自定义的雷区,如果不合法的话,就会弹出一个警告框,提示输入有误;单击“取消”退出自定义窗口。
2)方法
actionPerformrd(ActonEvent)方法是userDefine类中实现的ActionListener接口中的方法,当用户单击界面的“确定”,该方法被执行,所执行的操作就是,将用户输入的信息传入程序,实验自定义雷区的难度级别。当用户单击界面的“取消”,该方法被执行,所执行的操作就是,退出用户自定义界面。
5、ruleShow 类
ruleShow是javax.swing包中JRame框架的子类,并实现了ActionListener接口。ruleShow创建的对像:ruleshow是MineArea类的成员之一,当用户点击菜单栏中的帮助->游戏规则时,弹出界面,说明游戏
1)成员变量
·la1:用来显示扫雷游戏的规则如下
·la2,la2………;用来显示下面几条游戏规则
·Con1,Con2,Con3;用来装la1,la2 以实现在JFrame中布局;
·bu1;用记单击bu1,关闭窗口;
2)方法
actionPerformrd(ActonEvent)方法是ruleShow类中实现的ActionListener接口中的方法,当用户单击界面的“确定”,该方法被执行,所执行的操作就是,并关闭界面。
测试情况
在程序代码基本完成后,经过不断的调试与修改,最后测试本次所设计的扫雷游戏能够正常运行,在基本功能与画面上与Windows自带的扫雷游戏没有太大差别,没有出现明显的错误和漏洞,但是在一些细节方面仍然需要完善,比如在游戏中可以加入一些不同语音的提示,在游戏完成和失败的时候可以弹出一些小的Flash动画,还有就是可以扩展一下扫雷英雄榜的功能等。总的来说本次设计在功能上已经基本达到要求,其他细节方面有待以后完善
整体运行结果图
游戏菜单
帮助菜单
自定义难度
英雄榜
游戏规则
问题及心得
问题
1、界面的美观性做的不太好,比如说布局,颜色搭配有待改进
2、MineGame的初始化界面大小难以控制,特别是在自定义的情况下,需在手动改面窗口的大小。
心得
1、做完之后,确实有一点成就感,这种感觉激励着自已更加努力的学习这门课程
2、编程的进程肯定会遇到困难,要充分利用现有的资源 比如说互联网,书籍,这次实验多亏在在网上找的Java API,帮助我解决了不小困难。
3、要有团队合作精神,很感谢我的队友在这次实验给予我的帮助。