《java课程设计---参考格式.docx》由会员分享,可在线阅读,更多相关《java课程设计---参考格式.docx(15页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、天津商业大学宝德学院Java 程序设计课程报告20132014 学年第二学期题目扫雷游戏的设计与开发学号11501120学生姓名所在专业计算机科学与技术所在班级目录1引言 11.1 设计目的 11.2 设计说明 12总体设计 22.1 功能模块设计 22.2 流程图设计 43详细设计 63.1 扫雷棋盘的布局设计 63.2 雷区的设计 73.3 音效的设计 93.4 排行榜设计 104测试与运行 114.1 程序测试 114.2 程序运行 125总结 13参考文献 141引言引言本次开发的是一个扫雷游戏,这是一个综合性的题目,可以对 Java 语言中的各项功能有更好的理解和使用,通过具体的程序
2、来加深对 Java 语言的掌握,提高自己的编程水平,为以后的工作打下一定的基础。11设计目的扫雷游戏是 Windows 附件中的一个很有趣的游戏。本文使用 Java 语言编写一个与其类似的扫雷游戏。具体功能如下:(1)扫雷游戏分为初级、中级和高级三个级别,扫雷英雄榜存储每个级别的最好成绩,即挖出全部的地雷且用时最少者。单击游戏菜单可以选择“初级”、“中级”和“高级”或“查看英雄版”。(2)选择级别后将出现相应级别的扫雷区域,这是用户使用鼠标左键单击雷区中任何一个方块便启动计时器。(3)用户要揭开某个方块,可单击它。若所揭方块下有泪,用户便输了这一局,若所揭方块下五雷,则显示一个数字,该数字代表
3、方块的周围的 8 个方块中共有多少颗雷。(4)如果用户认为某个方块下埋着雷,单击右键可以在方块上标识一个用户认为是雷的图标,即给出一个扫雷标记。用户每标记出一个扫雷标记(无论用户的标记是否正确),程序将显示的剩余雷数减少一个。(5)扫雷胜利后(用时最少者),程序弹出保存成绩的对话框。(6)用户可以选择标记疑问的方块,用可以勾选游戏菜单下的标记即可,此时双击右键并可出现“?”标记。另有颜色选项,当用户勾选此项时,游戏将以最低图像像素来显示。(7)如果用户需要即使提示声,并可选中声音选项,此时将听到计时的卡塔声。当用户点中雷时,将有爆炸声产生,胜利时,将有凯旋的旋律播放,此时程序中的头像出现欢悦表
4、情。12设计说明本程序采用 Java 程序设计语言,在 Eclipse 平台下编辑、编译与调试。具体程序由 3 人组成的小组开发而成。小组成员的具体分工如表 1 所示:表表 1 各成员分工表各成员分工表成员名称成员名称完成的主要工作完成的主要工作程序设计程序设计课程报告课程报告负责整个程序前期的需求分析和整体功能的架构程序中棋盘的布局设计程序后期的测试与运行负责程序中雷区的设计与编码负责程序中音效的设计与编码负责排行榜的设计与编码报告的第 1 章、第 2 章和第 4 章报告的第 3 章目录、总结和参考文献的整理报告后期的格式设置(表格内行距均为单倍行距)(表格内行距均为单倍行距)2 总体设计总
5、体设计21功能模块设计本程序需实现的主要功能有:(1)用户可以自定义级别并且可以任意输入雷数;(2)具有计时功能,即显示用户完成移动盘子所花费的时间;(3)用户可以选择是否有音效;(4)自动保存扫雷英雄榜。程序的总体功能如图 1 所示:图图 1 总体功能图总体功能图(图表文字行距均为单倍行距)(图表文字行距均为单倍行距)2.2流程图设计程序总体流程如图 2 所示:图图 2 总体流程图总体流程图3详细设计详细设计31扫雷棋盘的布局设计系统的整体布局为:CardLayout 布局,采用了菜单、按钮、面板等组件,菜单主要包括开始、选择级别、标记、扫雷英雄榜、退出、按钮的功能是重新开始新的游戏。32雷
6、区的设计MineArea 类 是 javax.swing 包 中 Jpanel 容 器 的 子 类,实 现 了ActionListener 和 MouseListener 接口,所创建的对象:mineArea 是 MineGame类中最重要的成员之一,作为一个容器添加到 MineGame 窗口的中心。标明MineArea 类的主要成员变量、方法以及和 MineGame 类之间组合关系的 UML 图如图 3 所示:图图 3 MineArea 类的类的 UML 图图以下是 UML 图中有关数据和方法的详细说明:(1)成员变量 block 是 Block 类型的数组,用来确定雷区有多少需进行扫雷的方
7、块;blockView 是 BlockView 类型的数组,负责为 block 数组中的 Block 对象提供视图;lay 是 LayMines 类型的对象,负责设置 block 数组中的哪些方块是雷或不是雷;record 负责提供保存成绩的界面,是一个对话框,默认不可见。用户只有扫雷成功后(用时最少),才可以看见对话框;reStart 是一个按钮对象,用户单击它重新开始游戏;time 是计时器对象,负责计算用户的用时。(2)方法 initMineArea(int,int,int,int)方法可根据参数提供的数据设置雷区的宽度、高度、雷的数目以及雷区的级别;actionPerformed(Ac
8、tionEvent)是 MineArea 类实现的 ActionListener接 口 中 的 方 法。当 用 户 单 击 blockView 中 的 某 个 方 块 时,actionPerformed(ActionEvent)方法负责执行有关算法,例如,当用鼠标左键单击方块上的按钮后,若该方块下有雷,actionPerformed(ActionEvent)方法将使用户输掉本局,若该方块下无雷,actionPerformed(ActionEvent)方法将显示blockView 对象中的标签,该标签上是一个数字,该数字代表当前方块的周围的8 个方块中共有多少颗雷;show()方法是一个递归方法
9、。actionPerformed(ActionEvent)方法执行时将调用 show 方法进行扫雷;mousePressed(MouseEvent)方法是 MineArea 类实现的 MouseListener接口中的方法,当用户按下鼠标有件事 mousePressed(MouseEvent)方法负责让方块上显示一个探雷标记;inquireWin()方法用来判断用户是否扫雷成功,如果成功该方法负责让record 对话框可见。所谓扫雷成功是指不仅找到了全部的累而且用时最少。雷区设计流程图如图 3-5 所示:图图 4 雷区设计流程图雷区设计流程图33音效的设计music 类是 java.awt 包
10、中 Frame 的子类,通过构造音效声音方法,在MainFrame 主类中,通过 ActionListener 来监视是否已开始游戏,来决定播放计时声,之后又通过 ActionListener 来监视是否踩到雷和是否完成来决定,播放相应的音乐。下面标明 music 类的主要成员变量、方法以及和 MineFrame 类之间组合关系的 UML 图如图 3-6 所示,音效设计流程图如图 3-7 所示:图图 5 music 类的类的 UML 图图图图 6 音效设计流程图音效设计流程图34排行榜设计LogDialog 是 javax.swing 包 中 Jdialog 对 话 框 的 子 类,并 实 现
11、 了ActiongListener 接口。LogDialog 创建的对象 dialog 是 MainFrame 类(主类)的成员之一,当用户选择查看“英雄榜”菜单项时,该对话框可见,提供了查看扫雷的最好成绩的界面。标明 LogDialog 类的主要成员变量、方法以及和MainFrame 类之间组合关系的 UML 图如图 3-8 所示,排行榜设计流程图如图 3-9所示:图图 7 LogDialog 类的类的 UML 图图图图 8 排行榜设计流程图排行榜设计流程图4 测试与运行测试与运行41程序测试在程序代码基本完成后,经过不断的调试与修改,最后测试本次所设计的扫雷游戏能够正常运行,在基本功能与画
12、面上与 Windows 自带的扫雷游戏没有太大差别,没有出现明显的错误和漏洞,但是在一些细节方面仍然需要完善,比如在游戏中可以加入一些不同语音的提示,在游戏完成和失败的时候可以弹出一些小的 Flash 动画,还有就是可以扩展一下扫雷英雄榜的功能等。总的来说本次设计在功能上已经基本达到要求,其他细节方面有待以后完善。42程序运行程序运行主界面如图 9 所示:图图 9 程序主界面程序主界面程序主菜单如图 10 所示:图图 10 程序主菜单程序主菜单扫雷英雄榜如图 11 所示:图图 11 扫雷英雄榜扫雷英雄榜关于扫雷,如图 12 所示:图图 12 关于扫雷关于扫雷初级模式和中级模式如图 13 所示:
13、图图 13 初级模式和中级模式初级模式和中级模式5总结总结这个扫雷游戏是完全模拟微软系统自带的扫雷游戏,所以难度是比较大了,必然在编程过程中也遇到很多问题,有些问题比较简单但就不知道错在哪里,有些大问题之道在哪就是不知道怎么办才好,后来经过自己的不断调试,这个扫雷游戏终于大功告成。经过编写这个扫雷游戏,我认识到应该注意细节问题,虽然是很小的问题,但可以提高自己编程的能力,而且还可以培养自己编程的严谨性,同时还可以为以后的编程积累经验。编写完这个扫雷游戏,我发现自己有很多的不足,我想如果让我来单独来编写这个游戏,我感觉很吃力,因为这个游戏涉及到好多算法。感触最深的就是我们真的要扎扎实实的打基础!并且我感觉到只要我们自己肯下功夫学习,我们也可以做出很好的东西,不需要每次都抄袭别人的,只有自己的才是最珍贵的!通过该课程设计,全面系统的理解了程序构造的一般原理和基本实现方法。把死板的课本知识变得生动有趣,激发了学习的积极性。把学过的计算机编译原理的知识强化,能够把课堂上学的知识通过自己设计的程序表示出来,加深了对理论知识的理解。现在通过自己动手做实验,从实践上认识了操作系统是如何处理命令的,课程设计中程序比较复杂,在调试时应该仔细。
限制150内