欢迎来到三一文库! | 帮助中心 三一文库31doc.com 一个上传文档投稿赚钱的网站
三一文库
全部分类
  • 研究报告>
  • 工作总结>
  • 合同范本>
  • 心得体会>
  • 工作报告>
  • 党团相关>
  • 幼儿/小学教育>
  • 高等教育>
  • 经济/贸易/财会>
  • 建筑/环境>
  • 金融/证券>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 三一文库 > 资源分类 > DOC文档下载
     

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

    • 资源ID:3950762       资源大小:272.50KB        全文页数:15页
    • 资源格式: DOC        下载积分:4
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录   微博登录  
    二维码
    微信扫一扫登录
    下载资源需要4
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

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

    论论文作者姓名:文作者姓名: 指指导导教教师师姓姓名名( (职职称称) ): : 论论文提交日期:文提交日期: 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 贺平 编著,软件测试技术(65 页102 页),机械工业出版社,2005 年 2 胡林玲 主编,黄奇 副主编,软件工程与 UML(157 页161 页、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 年 致谢致谢 在论文完成之际,我要特别感谢我的指导老师胡老师的热情关怀和悉心指 导。在我撰写论文的过程中,胡老师倾注了大量的心血和汗水,无论是在论文 的选题、构思和资料的收集方面,还是在论文的研究方法以及成文定稿方面, 我都得到了胡老师悉心细致的教诲和无私的帮助,特别是他广博的学识、深厚 的学术素养、严谨的治学精神和一丝不苟的工作作风使我终生受益,在此表示 真诚地感谢和深深的谢意。在论文的写作过程中,也得到了许多同学的宝贵建 议,同时还到许多在工作过程中许多同事的支持和帮助,在此一并致以诚挚的 谢意。 感谢所有关心、支持、帮助过我的良师益友。 最后,向在百忙中抽出时间对本文进行评审并提出宝贵意见的各位专家表 示衷心地感谢! 声明声明 本人郑重声明:所呈交的学位论文,是本人在导师的指导下,独立进行研 究所取得的成果。除文中已经注明引用的内容外,本论文不包含任何其他个人 或集体已经发表或撰写过的科研成果。对本文的研究作出重要贡献的个人和集 体,均已在文中以明确方式标明。本人完全意识到本声明的法律责任由本人承 担。 第 11 页 共 18 页

    注意事项

    本文(毕业设计(论文)-扫雷游戏的设计与开发.doc)为本站会员(韩长文)主动上传,三一文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    经营许可证编号:宁ICP备18001539号-1

    三一文库
    收起
    展开