毕业设计论文扫雷游戏的设计与开发.doc

上传人:sccc 文档编号:4858232 上传时间:2023-05-20 格式:DOC 页数:15 大小:272.52KB
返回 下载 相关 举报
毕业设计论文扫雷游戏的设计与开发.doc_第1页
第1页 / 共15页
毕业设计论文扫雷游戏的设计与开发.doc_第2页
第2页 / 共15页
毕业设计论文扫雷游戏的设计与开发.doc_第3页
第3页 / 共15页
毕业设计论文扫雷游戏的设计与开发.doc_第4页
第4页 / 共15页
毕业设计论文扫雷游戏的设计与开发.doc_第5页
第5页 / 共15页
点击查看更多>>
资源描述

《毕业设计论文扫雷游戏的设计与开发.doc》由会员分享,可在线阅读,更多相关《毕业设计论文扫雷游戏的设计与开发.doc(15页珍藏版)》请在三一办公上搜索。

1、论文作者姓名:指导教师姓名(职称):论文提交日期:2012-3-7第 11 页 共 18 页扫雷游戏的设计与开发摘 要本论文研究的是以Java为开发环境,设计并开发一款扫雷游戏,其功能类似于Windows操作系统自带的扫雷游戏。论文首先介绍了制作游戏的整体思路及整个游戏设计的流程规划,然后介绍了雷区的布置及地雷随机产生的实现方法;重点介绍了在游戏过程中各事件的处理,其中又以鼠标事件和清除未靠近地雷区方块这两方面最为最要,鼠标事件是利用鼠标所发出的信息了解使用者的意图,进而做出相对应的动作,而清除未靠近地雷区方块由于引进了“递归”这个概念而使其简单化。本次设计只是完成了扫雷游戏的基本功能,在细节

2、方面仍有待以后完善。关键词:扫雷;Visual Basic 6.0;事件;递归The Design and Development of Mine GameAbstractWhat my thesis research for is basic on the develop environment of Visual Basic 6.0 , design and develop a mine game,its function is similar to the mine games of the Windows Operating System .The thesis has introdu

3、ced the layout of mined areas and the method of how to create the mines at random. It use vairies of components in Visual Basic 6.0 and the combination of some simple calculations; the thesis lays emphasis on introducing the processing of each event in the game. Among these events ,the mouse event a

4、nd the event of clearance of the area which isnt close to the mine field are much more important.The theory of mouse event is that the intention of user is learned by the information sent out by the mouse and then the program runs according to the information .The other event is simplified by the in

5、troduction of the concept of recursion.This design has been completed the basic function of mine game. The details still need to be improved.Key words: Mine game, Visual Basic 6.0, Affairs, Recursion目 录论文总页数:18页1引言11.1课题背景及意义11.2开发工具的选用及介绍12游戏的总体分析与设计32.1设计构想32.2流程规划42.3画面规划53游戏的详细设计63.1游戏初始化63.2雷区的

6、布置93.3游戏中主要模块的介绍与使用103.3.1鼠标事件103.3.2地雷及雷区表面探测情况123.3.3清除未靠近地雷的方块123.3.4游戏难度的选择143.4游戏的判断143.4.1游戏成功完成143.4.2游戏失败144游戏测试结果15结 论15参考文献16致 谢17声 明181 引言1.1 课题背景及意义随着社会的不断发展,人们的物质生活要求越来越高,计算机已经成为了人们生活中必不可少的一部分,人们利用计算机去学习、工作、娱乐。扫雷游戏是微软操作系统自带的一项小型娱乐游戏,在过去的一段时间里,微软操作系统经历过无数次的更新换代,很多原先有的内容不断被更替、变化,但是扫雷这款小游戏

7、依然活跃在微软操作系统中,可见这款游戏带给人们的深远影响,和人们对它的受欢迎程度。本次设计的课题我讲利用JAVA最为开发工作,对扫雷游戏的开发进行一个详细的讲解。通过对微软操作系统自带的扫雷游戏进行研究后,得出的结论是这个游戏中存在两个比较关键的地方:第一:初始化。包括雷区的分布和每次游戏随即产生的雷的总数,以及划分出的小区域中如何根据数字的提醒得知周围雷区的分布等等。第二:鼠标事件的处理。即是在游戏中用左键点击出现数字,数字的提醒表示雷的数量,用右键作出对雷的标志。左右键可以对雷区作出试探。1.2 开发工具的选用及介绍本课题采用的开发工具是JAVA,它最初被名为Oak,是Sun Micros

8、ystem公司在1995年推出的JAVA程序设计语言和JAVA平台的总称。Oak最开始是一个小型的编程语言,目标是针对家用电器等使用的,解决比如电话、闹钟、烤炉等电器的控制和通讯等问题。但是这些智能化加点的市场需求没有预期的高,所以没有得到很好的发展。后来,随着计算机网络的不断发展和壮大,Sun看到了Oak在计算机网络上开阔的发展前景,于是对Oka加以改造,然后用“JAVA”正式命名并发布。JAVA不同于一般的编译语言,它首先是将源代码编译成二进制字节码,然后根据不同平台的虚拟机来翻译解释执行字节码。从而实现跨平台的特性,起到“一次编译、到处执行”的目的。但是JAVA 的运行效率也是因为每次执

9、行要消耗一定的时间而有所降低。JAVA平台由两方面组成,它们分别是JAVA虚拟机和JAVA应用编程接口。JAVA应用编程接口为JAVA应用提供的是一个可以独立于操作系统的标准接口,而不需要依赖于操作系统,可以分为基本和扩展部分。JAVA编程语言是个简单、面向对象、分布式、解释性、健壮、安全与系统无关、可移植性、高性能、多线程和动态的语言。在系统安装JAVA平台之后,JAVA 便可以投入使用。现在的JAVA编程语言已经存在于几乎所有的操作系统中,方便人们的使用。2 游戏的总体分析与设计2.1 设计构想相信大部分使用微软操作系统的用户,对扫雷这款游戏都不会陌生,因为这是微软操作系统中自带的一项游戏

10、,而且这项游戏操作简单,老少皆宜。整个游戏在数字的提醒下进行雷的抓获,充满了紧张但是快乐的气氛。游戏可以给用户带来快乐,游戏的设计过程却能不断地训练使用者的逻辑思维,对于脑力要求越来越高的现代人来说,这样一款游戏不仅可以在适当的时候让我们得到放松和享受,更可以不时的检验一下自己,所以我们不难发现基于扫雷的一些升级游戏在市面上也越来越多了。现在就让我们来深入地了解一下这款游戏的规则,游戏的操作方面主要是以鼠标为主。点击一处地方,随后会出现数字,这些数字代表的是它周围八个格子里的雷的总数,根据这些数字和格子的分布,对雷区的布置进行推论。如果你确定一个格子是雷,就点击右键进行标记,如若不是雷,就点击

11、左键排除。反复按下右键方块则会以标示标示疑似三者关系不断循环。所以如果不确定一处地方是否有雷,可以反复点击右键,先做出疑似的判断。如果用左键点击不小心点击到的是藏有雷的地方,则宣告游戏失败,唯有将所有不含雷区的地方掀开,而且准确标记出所有的雷,游戏才算成功。2.2 流程规划我们大概将流程规划分为三个部分:画面初始、游戏者点击左键按下第一个方块、非地雷方块的展开。游戏者可以根据自己的需要和能力设置雷区的大小,一般雷区分为小、中、大三种区域。画面初始的时候,以游戏者上次设置的雷区大小为准,但此时全部方块都未掀开。当游戏者点下第一个方块时产生数字提示的同时,计时器开始启动,为了避免让游戏者在第一次按

12、下方块就踩到地雷,所以才需要在游戏者按下第一个数字时产生数字提示,这样在某种程度上也提高了游戏的紧张气氛。然后就是如何判断按下的方块是非地雷的处理,这也是整个游戏最为重要的部分,在这里使用递归的观念来检查方块是否含有地雷和是否继续向外翻以此对游戏者进行提示。流程规划如图1所示:是是开始依照使用者初始设定等待按键左键键右键显示方块1 布置地图2 启动计时器显示分数结束延按下方块周围展开非地雷方块否否是是否是否第一次按下按下方块是否为地图第一次按下是否再玩图1整体流程规划图2.3画面规划画面规划如图2所示:图23 游戏的详细设计3.1 游戏初始化当玩家开始游戏时,游戏画面如图3所示雷 区计数及其状

13、态区我们可以清楚的看到,游戏界面主要分为两个主要部分:1. 计数及状态区;2.地雷区。3.2雷区的布置当游戏界面初始化完成后,这时在地雷区中并未产生地雷,只有当玩家在地雷区中第一次点下左键后,才会在地雷区中随机的布置当前游戏难度下应该产生的地雷总数,其主要用意在于不让玩家第一次就踩到地雷,这样在某种程度上可以提高玩家游戏的气愤。具体实现如下所示:private sub command1.click() frmMain.mnuBegin.checked=False frmMain.mnuMiddle.checked=False frmMain.mnuExpert.checked=False fr

14、mMain.mnuCust.checked=True iCols=txtCol.Text iRows=txtRow.Text iBombs=txtNum.Text iLevel=3 OnGameNew frmMain.Form Print Unload MeEnd SubPrivate Sub Command2 Click() Unload MeEnd SubPrivate Sub Form Load() txtRow.Text=20 txtCol.Text=20 txtNum.Text=20End Sub3.3游戏中主要模块的介绍与使用3.3.1鼠标事件MouseListener和Mouse

15、MotionListener是两个接口,MouseEventDemo实现了这两个接口,那么他必须实现这两个接口中的所有方法。对于这个程序,可能有些方法是用不到的,那么它只能留个空方法体表示“实现”了这个方法。但其实这是不好的代码风格和编程习惯,所以Java中对于接口方法很多的那些接口提供了适配器类,所谓的适配器类,就是一个实现某个接口的类,但所有方法实现都是空方法,这样你可以继承这个类,同时继承了这些空实现,这样你只需要重写需要用到的函数版本。而适配器通常使用匿名内部类实现的。this.addMouseListener(new MouseAdapter() public void mouseP

16、ressed(MouseEvent me) txtStatus.setText(按下); public void mouseReleased(MouseEvent me) txtStatus.setText(释放); );在这个匿名类中就不需要那些空方法了,当然用这种方法,implements 后面的东西也可以不要了。至于main函数中的 MouseEventDemo med=new MouseEventDemo();new MouseEventDemo是声明了一个新的对象,并把它赋给了med引用,这样可以用这个引用调用这个类中的方法。例如这个类有继承自JFrame的setTitle方法,可以

17、med.setTitle(dfdfd);光一个new MouseEventDemo则没有被引用罢了,但本质上他们都调用了这个类的构造函数。3.3.2地雷及雷区表面探测情况 在游戏设计上,我利用了两个二维数组分别记录地雷的分布情况及雷区表面探测情形。图4标示地雷分布情况因为两个数组维数皆为2,所以我们通过双循环做数据的对比工作。另外,当游戏玩家按下非地雷的方块时,程序必须自动将周边非地雷的方块翻开,这个动作我们也可以通过双循环的方式检查以按下的方块为中心与周边的8个方块所形成的3*3的二维数组,鼠标指针所指即是代表按下的方块,利用双循环作数据的对比,不但速度快,而且在设计阶段,程序的架构也比较清

18、楚。程序设计时双循环常常搭配二维数组使用。 3.3.3清除未靠近地雷的方块这里先引入一个“递归”的概念,“递归”(Recursion)简单的说,就是一个程序能被自己所定义的语句调用。递归在程序设计上是一种重要的数据结构形态,通过递归程序的编写,在程序代码上会变得相当简洁,不过如果设计不当,会造成无穷循环或堆迭溢满的情形,所以递归的程序中心必须含有ifthen或Select Case等设计,以终止递归执行。在游戏过程中,当游戏者按下非地雷方块时,方块会沿四周八个方向向外翻开非地雷的方块。程序的执行方面必须判断:以按下方块为中心,检查周围八个方块是否为非地雷方块,若其中有一个方块是非地雷方块时,则

19、又以其为中心,向外检查周围八个方块是否为非地雷方块,如此反复的执行即构成递归的使用条件。前面已经提到,递归必须设计终止的条件判断,在本游戏的递归架构中,当判断方块的内容为数字时(即在非地雷方块周围),即立即停止递归程序。递归其实也不是万能的,以本游戏做测试,当地雷区范围越大,且地雷数目不多时(一翻开非地雷方块,几乎全部方块都会翻开),执行递归就会变的非常缓慢,甚至造成堆迭溢满(不足)的情形,所以在游戏设计上必须考虑地雷区的大小,以免造成执行时错误中断的情况发生。3.3.4游戏难度的选择这里我设置了“初级”,“中级”,“高级”以及“自定义”四个不同的难度级别,“初级”,“中级”,“高级”中的雷区

20、大小和地雷总数是已经设计好了的,如果玩家想要自己设置这些参数,可单击“游戏”“自定义”,然后在“设置”中输入行数,列数及地雷数,在这里我对行数及列数做出了一个限定,及行数和列数的最大值分别为24和30,当在设置地雷数的时候,如果地雷数大于或等于行数和列数的乘积,或者地雷数小于零,地雷数都将自动的转换为:地雷数=(行数-1)(列数-1)。3.4游戏的判断3.4.1游戏成功完成当在规定的时间内将所有的雷都正确的标示出来,游戏就会有一个弹出框提示你在多长时间内完成当前难度下的游戏。还有一种情况便是当只剩下地雷未探测的时候,及雷区方块总数-已清除的方块数=地雷总数的话,游戏也将成功完成。3.4.2游戏

21、失败当鼠标左键按下的方块为地雷方块事,地雷将会被引爆,游戏立即结束。当在设定时间内未探测完所有的地雷,地雷也将会引爆,对于这第二种行为,我们可以通过Timer组件来加以控制。利用Timer组件在固定时间即会触发时间的特性,在事件触发时便将计数值加一,直到判断计数值超过限定值时,即地雷引爆。具体代码如下所示:4游戏测试结果结论本论文在胡念青老师的悉心指导和严格要求下业已完成,从课题选择到具体构思和内容,无不凝聚着老师的心血和汗水,在四年的本科学习和生活期间,也始终感受着导师的精心指导和无私的关怀,我受益匪浅。在此向各位老师表示深深的感谢和崇高的敬意。这次做论文的经历也会使我终身受益,我感受到做论

22、文是要真真正正用心去做的一件事情,是真正的自己学习的过程和研究的过程,没有学习就不可能有研究的能力,没有自己的研究,就不会有所突破,那也就不叫论文了。希望这次的经历能让我在以后学习中激励我继续进步。不积跬步何以至千里,本设计能够顺利的完成,也归功于各位任课老师的认真负责,使我能够很好的掌握和运用专业知识,并在设计中得以体现。正是有了他们的悉心帮助和支持,才使我的毕业论文工作顺利完成,在此向XX大学,金融系的全体老师表示由衷的谢意。感谢他们四年来的辛勤栽培。参考文献1贺平 编著,软件测试技术(65页102页),机械工业出版社,2005年2胡林玲 主编,黄奇 副主编,软件工程与UML(157页16

23、1页、188页190页),电子工业出版社,2006年3邵丽萍、邵光亚、张后扬 编著,Java语言程序设计(第二版)(40页43页),清华大学出版社,2004年4美Watts S.Humphery编著,个体软件过程(113页128页),人民邮电出版社,2004年5美Richard Rouse编著,游戏设计原理与实践(245页264页),电子工业出版社,2004年6美Thomas Petchel编著,JAVA2游戏编程(44页62页、67页88页),清华大学出版社,2005年致谢在论文完成之际,我要特别感谢我的指导老师胡老师的热情关怀和悉心指导。在我撰写论文的过程中,胡老师倾注了大量的心血和汗水,

24、无论是在论文的选题、构思和资料的收集方面,还是在论文的研究方法以及成文定稿方面,我都得到了胡老师悉心细致的教诲和无私的帮助,特别是他广博的学识、深厚的学术素养、严谨的治学精神和一丝不苟的工作作风使我终生受益,在此表示真诚地感谢和深深的谢意。在论文的写作过程中,也得到了许多同学的宝贵建议,同时还到许多在工作过程中许多同事的支持和帮助,在此一并致以诚挚的谢意。感谢所有关心、支持、帮助过我的良师益友。最后,向在百忙中抽出时间对本文进行评审并提出宝贵意见的各位专家表示衷心地感谢!声明本人郑重声明:所呈交的学位论文,是本人在导师的指导下,独立进行研究所取得的成果。除文中已经注明引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写过的科研成果。对本文的研究作出重要贡献的个人和集体,均已在文中以明确方式标明。本人完全意识到本声明的法律责任由本人承担。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 农业报告


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号