当前位置:文档之家› java 扫雷游戏课程设计与实现

java 扫雷游戏课程设计与实现

毕业设计目录前言 (2)1 . 设计目的 (3)2 . 设计内容及要求 (3)2.1 扫雷游戏的基本要求 (3)3 .需求分析 (4)3.1 扫雷棋盘的布局设计 (4)3.2 雷区的设计 (4)3.2.1成员变量 (4)3.2.2方法 (5)3.3 排行榜设计 (5)4 .总体设计 (6)4.1 总体功能图 (6)4.2 总体流程图 (7)4.3雷区设计流程图 (8)4.4 排行榜设计流程图 (9)5 .代码实现 (9)5.1 类之间关系图 (9)5.2 运行效果图 (10)5.3 程序打包发布过程 (13)6 .总结 (14)参考文献 (14)7 .主要源代码 (15)第1页共28页毕业设计前言随着大学的扩招,在校大学生的人数也剧增。

老师教学任务繁重,加上各种教学设计、评估,老师工作量繁重不说,却往往事倍功半,教学质量没有明显的提高。

同时,如何设计考核的题目,使学生的知识得到总结、归纳和应用,并且使零散的知识条理化和系统化,这也是老师们重点思考的方向,但如此一来,在繁重的教学任务之外,分散了老师们不少的精力。

与传统考试模式相比,在线考试具有无可比拟的优越性,它可以将传统考试过程中的试卷组织、审定印制、传送收集、登记发放、评判归档各个环节缩小到一至两个环节,几乎屏蔽了所有人工直接干预考试活动的可能性,不但能够节约大量的时日、人力、物力与财力,而且还可以大幅度增加考试成绩的客观性和公正性。

所以本次课程设计充分利用现有的计算机软、硬件和网络资源实现无纸化考试以避免传统手工考试的不足,力求一种高效率的考试系统,来减轻教师负担,为学生提供更好的学习平台,同时提高自己系统开发的能力。

同时可以对试卷的难度系数、考试的时间、参考的对象等考试规则等进行量化。

操作简便快捷,解决了考试程序繁芜,教师耗时费力的问题。

学生可以在线自测,系统按照考试规则随机出题;也可以参加统一考试,试题由系统按照老师制定的规则生成统一的一份试卷。

同时教师可以针对某个考试,查看平均分、最高分、最低分、及格率、排名、答卷等信息。

在系统性能方面,在高并发人数下,本系统将依然能提供一个稳定运营环境。

总之本系统实现后将有如下的功能:(1) 可以创立电子题库,方便地实现试题的数字化管理.(2) 可以按照科学的策略智能组卷,从而提高出卷效率.(3) 可以具有操作性和交互性.(4) 使考试和评卷更具规范性和合理性.(5) 实现自动评卷和数据的有效保存.第2页共28页毕业设计1 . 设计目的通过选择扫雷游戏软件设计,这个综合性的题目作为本次的课程设计。

可以让我们更加熟悉Java程序设计这门课程,学会熟练使用Java这个软件,加深对Java语言的掌握,提高编程水平。

同时培养独立思考和同学间团结合作的能力,为毕业设计以及将来的工作打下坚实的基础。

2 . 设计内容及要求2.1 扫雷游戏的基本要求Windows 2000/XP系统提供的扫雷游戏是一个很有趣的游戏。

本章的课程设计使用Java语言编写一个与其类似的扫雷游戏。

具体要求如下:(1) 扫雷游戏分为初级、中级和高级三个级别,扫雷英雄榜存储每个级别的最好成绩,即挖出全部的地雷且用时最少者。

单击游戏菜单可以选择“初级”、“中级”和“高级”或“查看英雄版”。

(2) 选择级别后将出现相应级别的扫雷区域,这是用户使用鼠标左键单击雷区中任何一个方块便启动计时器。

(3) 用户要揭开某个方块,可单击它。

若所揭方块下有泪,用户便输了这一局,若所揭方块下五雷,则显示一个数字,该数字代表方块的周围的8个方块中共有多少颗雷。

(4) 如果用户认为某个方块下埋着雷,单击右键可以在方块上标识一个用户认为是雷的图标,即给出一个扫雷标记。

用户每标记出一个扫雷标记(无论用户的标记是否正确),程序将显示的剩余雷数减少一个。

(5) 扫雷胜利后(用时最少者),程序弹出保存成绩的对话框。

(6)用户可以选择标记疑问的方块,用可以勾选游戏菜单下的标记(或者用快捷键alt+G 然后M)即可,此时双击右键并可出现“?”标记。

另有颜色选项,当用户勾选此项时,游戏将以最低图像像素来显示。

(7)如果用户需要即使提示声,并可选中声音选项,此时将听到计时的卡塔声。

当用户点中雷时,将有爆炸声产生,胜利时,将有凯旋的旋律播放,此时企鹅出现欢悦表情。

2.2 需实现的主要功能第3页共28页毕业设计(1) 用户可以自定义级别并且可以任意输入雷数;(2) 具有计时功能,即显示用户完成移动盘子所花费的时间;(3) 用户可以选择是否有音效;(4) 自动保存扫雷英雄榜;3 .需求分析3.1 扫雷棋盘的布局设计系统的整体布局为:CardLayout布局, 采用了菜单、按钮、面板…等组件,菜单主要包括开始,选择级别,标记,扫雷英雄榜,退出,按钮的功能是重新开始新的游戏。

3.2 雷区的设计MineArea类是javax.swing包中Jpanel容器的子类,实现了ActionListener和MouseListener接口,所创建的对象:mineArea是MineGame类中最重要的成员之一,作为一个容器添加到MineGame窗口的中心。

标明MineArea类的主要成员变量、方法以及和MineGame类之间组合关系的UML图如图2-1所示。

以下是UML图中有关数据和方法的详细说明。

3.2.1成员变量(1)block是Block类型的数组,用来确定雷区有多少需进行扫雷的方块。

(2)blockView是BlockView类型的数组,负责为block数组中的Block对象提供视图。

(3)lay是LayMines类型的对象,负责设置block数组中的哪些方块是雷或不是雷。

第4页共28页毕业设计(4)record负责提供保存成绩的界面,是一个对话框,默认不可见。

用户只有扫雷成功后(用时最少),才可以看见对话框。

(5)reStart是一个按钮对象,用户单击它重新开始游戏。

(6)time是计时器对象,负责计算用户的用时。

3.2.2方法(1)initMineArea(int,int,int,int)方法可根据参数提供的数据设置雷区的宽度、高度、雷的数目以及雷区的级别。

(2)actionPerformed(ActionEvent)是MineArea类实现的ActionListener接口中的方法。

当用户单击blockView中的某个方块时,actionPerformed(ActionEvent)方法负责执行有关算法,例如,当用鼠标左键单击方块上的按钮后,若该方块下有雷,actionPerformed(ActionEvent)方法将使用户输掉本局,若该方块下无雷,actionPerformed(ActionEvent)方法将显示blockView对象中的标签,该标签上是一个数字,该数字代表当前方块的周围的8个方块中共有多少颗雷。

(3)show()方法是一个递归方法。

actionPerformed(ActionEvent)方法执行时将调用show方法进行扫雷。

(4)mousePressed(MouseEvent)方法是MineArea类实现的MouseListener接口中的方法,当用户按下鼠标有件事mousePressed(MouseEvent)方法负责让方块上显示一个探雷标记。

(5)inquireWin()方法用来判断用户是否扫雷成功,如果成功该方法负责让record 对话框可见。

所谓扫雷成功是指不仅找到了全部的累而且用时最少。

综上所述,MineArea创建的扫雷区域效果如图2.2.2所示。

3.3 排行榜设计LogDialog是javax.swing包中Jdialog对话框的子类,并实现了ActiongListener 接口。

LogDialog创建的对象dialog是MainFrame类(主类)的成员之一,当用户选择查看“英雄榜”菜单项时,该对话框可见,提供了查看扫雷的最好成绩的界面。

标明LogDialog类的主要成员变量、方法以及和MainFrame类之间组合关系的UML图如图2-3所示。

第5页共28页毕业设计4 .总体设计4.1 总体功能图第6页共28页毕业设计4.2 总体流程图第7页共28页毕业设计4.3雷区设计流程图第8页共28页毕业设计4.4 排行榜设计流程图5 .代码实现5.1 类之间关系图第9页共28页毕业设计5.2 运行效果图第10页共28页5.3 程序打包发布过程可以使用jar.exe命令制作JAR文件来发布编写的软件。

(1)首先用文本编辑器,如Windows下的“记事本”,编写一个清单文件:Mymoon.mfManifest-Version: 1.0Main-Class: MineGameCreated-By: 1.5(Sun Microsystems Inc.)将Mymoon.mf保存到G:\Java课程设计\扫雷游戏1\扫雷游戏33中,即和应用程序所用的字节码文件保存在相同的目录中。

注意:清单文件中的“Manifest-Version:”和1.0、“Main-Class”和主类MineGame 之间以及“Created-By:”和1.5之间必须有且只有一个空格。

(2)生成JAR文件。

G:\Java课程设计\扫雷游戏1\扫雷游戏33\jar cfm Game.jar Mymoon.mf *.class其中,参数c表示要生成一个新的JAR文件,f表示要生成的JAR文件的名字,m表示清单文件的名字。

可以将Hannoi.jar复制到任何一个安装了Java运行环境(版本号需高于1.5的计算机上)的计算机上,用户用鼠标双击该文件的图标就可以运行扫雷游戏。

6 .总结通过这次的课程设计,我对Java这门语言有了更深刻的理解。

其中包括类、对象、接口、继承、方法以及Java语言中的常用包等的使用方法,特别是图形用户界面里各种组件的创建,事件处理等相关知识。

还学会了很多在这个学期《Java2课程设计基础》课上没有学会和没有学懂的东西,使我对Java语言是一种非常难懂的语言的思想有了极大的改观。

这次的课程设计是用Java语言及相关知识设计一个扫雷游戏系统,能实现选择游戏级别,记录游戏时间和保存游戏成绩等功能。

虽然整个设计的时间才短短两周,我还是对JDK和JCreator等Java语言开发工具有了深层次的认知,并熟练掌握了它们的使用方法。

而且这次的课程设计,也使我的编程能力有了明显的提高。

通过这次课程设计设计,我才明白学习是一个长期积累的过程,在以后的工作、生活中都应该不断的学习,努力提高自己知识和综合素质。

此外,我认为这次课程设计最大的收获就是:知识必须通过应用才能实现其价值!有些东西以为学会了,但真正到用的时候才发现是两回事,所以我认为只有到真正会用的时候才是真的学会了。

相关主题