毕业设计(论文)-扫雷游戏的设计与开发.doc_第1页
毕业设计(论文)-扫雷游戏的设计与开发.doc_第2页
毕业设计(论文)-扫雷游戏的设计与开发.doc_第3页
毕业设计(论文)-扫雷游戏的设计与开发.doc_第4页
毕业设计(论文)-扫雷游戏的设计与开发.doc_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

论论文作者姓名:文作者姓名: 指指导导教教师师姓姓名名( (职职称称) ): : 论论文提交日期:文提交日期: 2012-3-7 扫雷游戏的设计与开发扫雷游戏的设计与开发 摘摘 要要 本论文研究的是以 java 为开发环境,设计并开发一款扫雷游戏,其功能类 似于 windows 操作系统自带的扫雷游戏。论文首先介绍了制作游戏的整体思路 及整个游戏设计的流程规划,然后介绍了雷区的布置及地雷随机产生的实现方 法;重点介绍了在游戏过程中各事件的处理,其中又以鼠标事件和清除未靠近 地雷区方块这两方面最为最要,鼠标事件是利用鼠标所发出的信息了解使用者 的意图,进而做出相对应的动作,而清除未靠近地雷区方块由于引进了“递归” 这个概念而使其简单化。 本次设计只是完成了扫雷游戏的基本功能,在细节方面仍有待以后完善。 关键词关键词:扫雷;visual basic 6.0;事件;递归 the design and development of mine game abstract what 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 introduced 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 and 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 introduction 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引言1 1.1 课题背景及意义1 1.2 开发工具的选用及介绍1 2游戏的总体分析与设计3 2.1 设计构想3 2.2 流程规划4 2.3 画面规划5 3游戏的详细设计6 3.1 游戏初始化6 3.2 雷区的布置9 3.3 游戏中主要模块的介绍与使用.10 3.3.1 鼠标事件.10 3.3.2 地雷及雷区表面探测情况.12 3.3.3 清除未靠近地雷的方块.12 3.3.4 游戏难度的选择.14 3.4 游戏的判断.14 3.4.1 游戏成功完成.14 3.4.2 游戏失败.14 4游戏测试结果.15 结 论.15 参考文献.16 致 谢.17 声 明.18 第 1 页 共 18 页 1 1 引言引言 1.11.1课题背景课题背景及意义及意义 随着社会的不断发展,人们的物质生活要求越来越高,计算机已经成为 了人们生活中必不可少的一部分,人们利用计算机去学习、工作、娱乐。 扫雷游戏是微软操作系统自带的一项小型娱乐游戏,在过去的一段时间 里,微软操作系统经历过无数次的更新换代,很多原先有的内容不断被更替、 变化,但是扫雷这款小游戏依然活跃在微软操作系统中,可见这款游戏带给 人们的深远影响,和人们对它的受欢迎程度。本次设计的课题我讲利用 java 最为开发工作,对扫雷游戏的开发进行一个详细的讲解。 通过对微软操作系统自带的扫雷游戏进行研究后,得出的结论是这个游 戏中存在两个比较关键的地方: 第一:初始化。包括雷区的分布和每次游戏随即产生的雷的总数,以及 划分出的小区域中如何根据数字的提醒得知周围雷区的分布等等。 第二:鼠标事件的处理。即是在游戏中用左键点击出现数字,数字的提 醒表示雷的数量,用右键作出对雷的标志。左右键可以对雷区作出试探。 1.21.2开发工具的选用及介绍开发工具的选用及介绍 本课题采用的开发工具是 java,它最初被名为 oak,是 sun microsystem 公司在 1995 年推出的 java 程序设计语言和 java 平台 的总称。oak 最开始是一个小型的编程语言,目标是针对家用电器等 使用的,解决比如电话、闹钟、烤炉等电器的控制和通讯等问题。但 是这些智能化加点的市场需求没有预期的高,所以没有得到很好的发 展。后来,随着计算机网络的不断发展和壮大,sun 看到了 oak 在计 算机网络上开阔的发展前景,于是对 oka 加以改造,然后用“java” 正式命名并发布。 java 不同于一般的编译语言,它首先是将源代码编译成二进制 字节码,然后根据不同平台的虚拟机来翻译解释执行字节码。从而实 现跨平台的特性,起到“一次编译、到处执行”的目的。但是 java 的运行效率也是因为每次执行要消耗一定的时间而有所降低。 java 平台由两方面组成,它们分别是 java 虚拟机和 java 应 用编程接口。java 应用编程接口为 java 应用提供的是一个可以独 立于操作系统的标准接口,而不需要依赖于操作系统,可以分为基本 和扩展部分。 java 编程语言是个简单、面向对象、分布式、解释性、健壮、 安全与系统无关、可移植性、高性能、多线程和动态的语言。在系统 安装 java 平台之后,java 便可以投入使用。现在的 java 编程语 言已经存在于几乎所有的操作系统中,方便人们的使用。 2 2游戏的总体分析与设计游戏的总体分析与设计 2.12.1 设计构想设计构想 相信大部分使用微软操作系统的用户,对扫雷这款游戏都不会陌生,因 为这是微软操作系统中自带的一项游戏,而且这项游戏操作简单,老少皆宜。 第 2 页 共 18 页 整个游戏在数字的提醒下进行雷的抓获,充满了紧张但是快乐的气氛。游戏 可以给用户带来快乐,游戏的设计过程却能不断地训练使用者的逻辑思维, 对于脑力要求越来越高的现代人来说,这样一款游戏不仅可以在适当的时候 让我们得到放松和享受,更可以不时的检验一下自己,所以我们不难发现基 于扫雷的一些升级游戏在市面上也越来越多了。 现在就让我们来深入地了解一下这款游戏的规则,游戏的操作方面主 要是以鼠标为主。点击一处地方,随后会出现数字,这些数字代表的是它周 围八个格子里的雷的总数,根据这些数字和格子的分布,对雷区的布置进行 推论。如果你确定一个格子是雷,就点击右键进行标记,如若不是雷,就点 击左键排除。反复按下右键方块则会以标示标示疑似三者关系不断循环。 所以如果不确定一处地方是否有雷,可以反复点击右键,先做出疑似的判断。 如果用左键点击不小心点击到的是藏有雷的地方,则宣告游戏失败,唯有将 所有不含雷区的地方掀开,而且准确标记出所有的雷,游戏才算成功。 2.22.2 流程规划流程规划 我们大概将流程规划分为三个部分:画面初始、游戏者点击左键按下 第一个方块、非地雷方块的展开。 游戏者可以根据自己的需要和能力设置雷区的大小,一般雷区分为小、 中、大三种区域。画面初始的时候,以游戏者上次设置的雷区大小为准,但 此时全部方块都未掀开。当游戏者点下第一个方块时产生数字提示的同时, 计时器开始启动,为了避免让游戏者在第一次按下方块就踩到地雷,所以才 需要在游戏者按下第一个数字时产生数字提示,这样在某种程度上也提高了 游戏的紧张气氛。然后就是如何判断按下的方块是非地雷的处理,这也是整 个游戏最为重要的部分,在这里使用递归的观念来检查方块是否含有地雷和 是否继续向外翻以此对游戏者进行提示。 流程规划如图 1 所示: 第 3 页 共 18 页 是 是 开始 依照使用者初始设定 等待按键 左键 键 右键 显示方块 1 布置地图 2 启动计时器 显示分数 结束 延按 下方 块周 围展 开非 地雷 方块 否 否 是是 否 是 否 第一次按下 按下方块是否 为地图 第一次按下 是否再玩 图 1 整体流程规划图 2.32.3 画面规划画面规划 画面规划如图 2 所示: 第 4 页 共 18 页 图 2 3 3游戏的详细设计游戏的详细设计 3.13.1 游戏初始化游戏初始化 当玩家开始游戏时,游戏画面如图 3 所示 雷 区 计数及其状态区 第 5 页 共 18 页 我们可以清楚的看到,游戏界面主要分为两个主要部分:1. 计数及状态区; 2.地雷区。 3.23.2 雷区的布置雷区的布置 当游戏界面初始化完成后,这时在地雷区中并未产生地雷,只有当玩家在 地雷区中第一次点下左键后,才会在地雷区中随机的布置当前游戏难度下应该 产生的地雷总数,其主要用意在于不让玩家第一次就踩到地雷,这样在某种程 度上可以提高玩家游戏的气愤。具体实现如下所示: private sub command1.click() frmmain.mnubegin.checked=false frmmain.mnumiddle.checked=false frmmain.mnuexpert.checked=false frmmain.mnucust.checked=true icols=txtcol.text irows=txtrow.text ibombs=txtnum.text ilevel=3 ongamenew frmmain.form print unload me end sub private sub command2 click() unload me end sub private sub form load() txtrow.text=20 txtcol.text=20 txtnum.text=20 end sub 第 6 页 共 18 页 3.33.3 游戏游戏中主要模块的介绍与使用中主要模块的介绍与使用 3.3.13.3.1 鼠标事件鼠标事件 mouselistener 和 mousemotionlistener 是两个接口,mouseeventdemo 实现了这两个接口,那么他必须实现这两个接口中的所有方法。对于这个程序, 可能有些方法是用不到的,那么它只能留个空方法体表示“实现”了这个方法。 但其实这是不好的代码风格和编程习惯,所以 java 中对于接口方法很多的那些 接口提供了适配器类,所谓的适配器类,就是一个实现某个接口的类,但所有 方法实现都是空方法,这样你可以继承这个类,同时继承了这些空实现,这样 你只需要重写需要用到的函数版本。 而适配器通常使用匿名内部类实现的。 this.addmouselistener(new mouseadapter() public void mousepressed(mouseevent me) txtstatus.settext(“按下“); public void mousereleased(mouseevent me) txtstatus.settext(“释放“); ); 在这个匿名类中就不需要那些空方法了,当然用这种方法,implements 后面的 东西也可以不要了。至于 main 函数中的 mouseeventdemo med=new mouseeventdemo();new mouseeventdemo 是声明了一个新的对象,并把它 赋给了 med 引用,这样可以用这个引用调用这个类中的方法。例如这个类有继 承自 jframe 的 settitle 方法,可以 med.settitle(“dfdfd“); 光一个 new mouseeventdemo 则没有被引用罢了,但本质上他们都调用了这个类 的构造函数。 3.3.23.3.2 地雷及雷区表面探测情况地雷及雷区表面探测情况 在游戏设计上,我利用了两个二维数组分别记录地雷的分布情况及雷区表面 探测情形。 第 7 页 共 18 页 图 4 标示地雷分布情况 因为两个数组维数皆为 2,所以我们通过双循环做数据的对比工作。另外, 当游戏玩家按下非地雷的方块时,程序必须自动将周边非地雷的方块翻开,这 个动作我们也可以通过双循环的方式检查以按下的方块为中心与周边的 8 个方 块所形成的 3*3 的二维数组,鼠标指针所指即是代表按下的方块,利用双循环 作数据的对比,不但速度快,而且在设计阶段,程序的架构也比较清楚。程序 设计时双循环常常搭配二维数组使用。 3.3.33.3.3 清除未靠近地雷的方块清除未靠近地雷的方块 这里先引入一个“递归”的概念, “递归”(recursion)简单的说,就是一个 程序能被自己所定义的语句调用。递归在程序设计上是一种重要的数据结构形 态,通过递归程序的编写,在程序代码上会变得相当简洁,不过如果设计不当, 会造成无穷循环或堆迭溢满的情形,所以递归的程序中心必须含有 ifthen 或 select case 等设计,以终止递归执行。 在游戏过程中,当游戏者按下非地雷方块时,方块会沿四周八个方向向外 翻开非地雷的方块。 程序的执行方面必须判断:以按下方块为中心,检查周围八个方块是否为 非地雷方块,若其中有一个方块是非地雷方块时,则又以其为中心,向外检查 第 8 页 共 18 页 周围八个方块是否为非地雷方块,如此反复的执行即构成递归的使用条件。 前面已经提到,递归必须设计终止的条件判断,在本游戏的递归架构中, 当判断方块的内容为数字时(即在非地雷方块周围) ,即立即停止递归程序。 递归其实也不是万能的,以本游戏做测试,当地雷区范围越大,且地雷数 目不多时(一翻开非地雷方块,几乎全部方块都会翻开) ,执行递归就会变的非 常缓慢,甚至造成堆迭溢满(不足)的情形,所以在游戏设计上必须考虑地雷 区的大小,以免造成执行时错误中断的情况发生。 3.3.43.3.4 游戏难度的选择游戏难度的选择 这里我设置了“初级” , “中级” , “高级”以及“自定义”四个不同的难度 级别, “初级” , “中级” , “高级”中的雷区大小和地雷总数是已经设计好了的, 如果玩家想要自己设置这些参数,可单击“游戏”“自定义” ,然后在“设置” 中输入行数,列数及地雷数,在这里我对行数及列数做出了一个限定,及行数 和列数的最大值分别为 24 和 30,当在设置地雷数的时候,如果地雷数大于或 等于行数和列数的乘积,或者地雷数小于零,地雷数都将自动的转换为:地雷 数=(行数-1)(列数-1) 。 3.43.4 游戏的判断游戏的判断 3.4.13.4.1 游戏成功完成游戏成功完成 当在规定的时间内将所有的雷都正确的标示出来,游戏就会有一个弹出框 提示你在多长时间内完成当前难度下的游戏。 还有一种情况便是当只剩下地雷未探测的时候,及雷区方块总数-已清除的 方块数=地雷总数的话,游戏也将成功完成。 3.4.23.4.2 游戏失败游戏失败 当鼠标左键按下的方块为地雷方块事,地雷将会被引爆,游戏立即结束。 当在设定时间内未探测完所有的地雷,地雷也将会引爆,对于这第二种行 为,我们可以通过 timer 组件来加以控制。利用 timer 组件在固定时间即会触 发时间的特性,在事件触发时便将计数值加一,直到判断计数值超过限定值时, 即地雷引爆。具体代码如下所示: 第 9 页 共 18 页 4 4 游戏测试结果游戏测试结果 结论结论 本论文在胡念青老师的悉心指导和严格要求下业已完成,从课题选择到具体 构思和内容,无不凝聚着老师的心血和汗水,在四年的本科学习和生活期间, 也始终感受着导师的精心指导和无私的关怀,我受益匪浅。在此向各位老师表 示深深的感谢和崇高的敬意。 这次做论文的经历也会使我终身受益,我感受到做论文是要真真正正用心 去做的一件事情,是真正的自己学习的过程和研究的过程,没有学习就不可能 有研究的能力,没有自己的研究,就不会有所突破,那也就不叫论文了。希望 这次的经历能让我在以后学习中激励我继续进步。不积跬步何以至千里,本设 计能够顺利的完成,也归功于各位任课老师的认真负责,使我能够很好的掌握 和运用专业知识,并在设计中得以体现。正是有了他们的悉心帮助和支持,才 使我的毕业论文工作顺利完成,在此向 xx 大学,金融系的全体老师表示由衷的 谢意。感谢他们四年来的辛勤栽培。 第 10 页 共 18 页 参考文献参考文献 1 贺平 编著,软

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论