Java-扫雷游戏-课程设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Java 课程设计
题目:扫雷游戏
…
系别信息与计算科学
专业班级信息与计算科学091班
学生姓名余启张昱宋加望
指导教师贺慧琳
提交日期 2012年5月25日
目录
一、设计目的(一级标题,用黑体小三) (3)
二、设计要求和设计指标 (3)
三、设计内容 (3)
总体设计3
MineGame类4
MineArea5
Block类7
BlockView类7
LayMines类9
Record类9
ShowRecord类10
userDefine 类11
voiceShow类13
ruleShow 类14
authorShow 类16
所需图像17
所需音频17
整体效果17
四、本设计改进和建议 (20)
五、总结(感想和心得等) (20)
六、主要参考文献 (20)
附录 (20)
一、设计目的
通过选择《Java课程设计(第二版)》中扫雷游戏,这个综合性的题目作为本次的课程设计。可以让我们更加熟悉Java程序设计这门课程,学会熟练使用Jcreator这个软件,加深对Java语言的掌握,提高编程水平。同时培养独立思考和同学间团结合作的能力,为毕业设计以及将来的工作打下坚实的基础。
二、设计要求和设计指标
参考Windows 2000/XP系统提供的扫雷游戏,改进扫雷游戏程序,增加以下功能:在主界面中添加一个菜单栏,菜单栏中包括游戏和帮助两个菜单,其中游戏菜单中设置初级、中级、高级、自定义、声音、扫雷英雄榜这几个菜单项,帮助菜单中设置游戏规则和制作人员两个菜单项。
三、设计内容
总体设计
在设计扫雷游戏时,需要编写个Java源文件:、、、、、、、、、、ruleShow
扫雷游戏除了需要编写上述java 源文件所给出的类外,还需要Java 系统提供的一些重要的类,如File、JButton、和Jlabel等类。扫雷游戏所用到的一些重要的类以及之间的组合关系如图1所示:
图1 类之间的组合关系
MineGame类
3.2.1. 效果图(如下图2)
图2 MineGame创建的窗口
3.2.2 UML类图
MineGame类是包中Jframe的一个子类,并实现了ActionListener接中,标明该类的主要成员变量和方法的UML图如图3所示
图3 MineGame类的UML图
以下是UML图中有关数据和方法的详细说明。
1)成员变量
· bar和fileMenu提供菜单操作,单击游戏菜单中的选项为“初级”“中级”“高级”“自定义”“扫雷英雄榜”“背景声音”“退出”“游戏规则”“制作人”等
·MineArea 是扫雷区域,提供有关扫雷的主要功能。
·“英雄榜”负责存放三个级别的扫雷最好成绩。
·showheroRecord负责显示英雄榜中的数据
·userdefine负责用户自定义功能
·VoiceShow 负责背景音乐功能
·ruleshow负责显示游戏规则功能
·authorshow负责显示作者功能
2)
·MineGame()是橘色造方法,负责完成窗口的主要功能
·actionPerformed(ActionEvent)方法是MineGame类实现的ActionListerer接口中的方法,该方法负责执行菜单发出的有关命令。用户选择菜单项可以触发ActionEvent事件,导致actionPerformed(ActionEvent)方法执行相应的操作,例如将mineAreaw创建的雷区设置为初级中级高级等
·Main(String[])方法是程序的入口方法
3.2.3代码(见附录1)
MineArea
3.3.1 效果图:(见下图4)
图4 MineArea创建的扫雷区域效果图
3.3.2 UML图
MineArea类是包中JPanel容器的子类,实现了ActionListener和MouserListener
接口,所创建的对象:mineArea是MineGame类中最重要的成员之一,作为一个容器添加到MineGame窗口的中心。标明MineArea类的主要成员变量、方法以及和MineGame类之间组合关系的UML图如图5:
图5 MineGame类之间组合关系的UML图
以下是UML图中有关数据和方法的详细说明。
1)成员变量
·Block是Block类型的数组,用来确定雷区有多少需进行扫雷的方块。
·blockView是Blockview类型的数组,负责为block数组中的Block对象提供视图。·Lay是LayMines类型的对象,负责设置block数组中的哪些方块是雷或不是雷。·Record负责提供保存成绩的界面,是一个对话框,默认不可见。用户只有扫雷成功后(用时最少),才能看见该对话框。
·reStart是一个按钮对象,用户单击它重新开始游戏。
·time是计时器对象,负责计算用户的用时。
2)方法
·initMineArea(int,int,int,int)方法可根据参数提供的数据设置雷区的宽度,高度,雷的数目以及雷区的级别。
·actionPerformed(ActionEvent)是MIneArea类实现ActionListener接口中的方法。当用户单击blockView中的某个方块时,actionPerformed(ActionEvent)方法负责执行有关算法,例如,当用鼠标左键单击方块上的按钮后,若该方块下有雷,actionPerformed (ActionEvent)方法将使用户输掉本局,若该方块下又雷,actionPerformed(ActionEvent)方法将显示BlockView对象中的标签,该标签上是一个数字,该数字代表当前方块的周围的8个方块中总共有多少颗雷
·show()方法是一个递归方法。actionPerformed(ActionEvent)方法执行时将调用show 方法进行扫雷。
·mousePress(MouseEvent)方法是MineArea类实现的MouseListener接口中的方法,当用户按下鼠标右键时,mousePress(MouseEvent)方法负责让方块上显示一个探雷标记。·inquireWin()方法用来判断用户是否扫雷成功,如果成功该方法负责让record对话框可见。所谓扫雷成功是指不仅找到了全部的雷而且用时最少。