ImageVerifierCode 换一换
格式:DOCX , 页数:17 ,大小:411.30KB ,
资源ID:23479681      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/23479681.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(Windows平台下扫雷游戏的开发.docx)为本站会员(b****2)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

Windows平台下扫雷游戏的开发.docx

1、Windows平台下扫雷游戏的开发本科学年论文(设计)题 目 Windows平台下扫雷游戏的开发 信息工程学院(系)计算机科学与技术专业2012级本科班本科生学年论文(设计)成绩表姓名专业班级论文题目指定任选指导教师评语及评分指导教师评语:指导教师评分_ 指导教师签字:_ 年 月 日主管院长签字_(盖公章) 年 月 日Windows平台下扫雷游戏的开发摘 要: 在Windows XP系统中自带了一些娱乐的小游戏,其中扫雷游戏受到了广大用户的欢迎,本文通过Visual C+6.0来开发一款简单的扫雷游戏。采用MFC应用程序设计,先在对话框中绘制一个以网格为单位的位图,然后在网格中随机布雷。通过算

2、法计算无雷网格中应该显示的数字,当玩家标记完所有的雷游戏胜利。关键词: 扫雷; Visual C+ 6.0; MFC程序设计;消息映射Windows platform Minesweeping Game developmentAbstract: Windows XP comes with some small entertainment system, Minesweeping Game was welcomed by the masses of users. In the article, through Visual C+ 6.0 to develop a simple Minesweep

3、ing Game. Using MFC Application design. Firstly, draw a grid on the dialog box for the unit of the bitmap, then produce mines randomly in the grid. The number should be displayed by calculation of the algorithm in the grid without mines , when all mines were marked by players, the game is victory. K

4、ey words: Minesweeping; Visual C+ 6.0;MFC Programming; The Message Map目录第一章 引言 11.1研究背景 11.2研究方案 11.3 本文安排 1第二章 游戏的总体设计与分析 22.1需求分析 22.2游戏功能介绍 22.3设计构想 22.4设计过程 3第三章 游戏的具体实现过程 43.1扫雷游戏的模块实现 43.2扫雷核心-布雷算法设计 63.2.1随机布雷算法的设计 63.2.2确定周围方块的数字 63.3扫雷鼠标事件的处理 83.4时间显示方法 9第四章 程序的运行和调试 104.1游戏初始化界面 104.2游戏布雷界

5、面 104.3游戏失败界面 11第五章 游戏的设计总结 12致谢 13参考文献 13第一章 引言1.1研究背景当前随着计算机的深入普及,越来越多的人有了个人电脑,人们运用计算机完成许多重要的工作,计算机在人们的生活中变的越来越来重要。随着计算机的应用和发展计算机已经不单纯是一个工作工具,人们越来越重视计算机的娱乐性,系统自带的小游戏也占据了相当重要的地位,与那些网络游戏和3D游戏相比,它有编写简单容易上手等特点,非常适合人们在完成工作的时候适当的娱乐要求。这些小游戏大都是以益智和娱乐为目的,不仅给紧张工作的人们以放松,还可以让人们的大脑得到开发。这些小游戏包括扫雷,弹球,纸牌等等。扫雷游戏是W

6、indows操作系统自带的一款小游戏,在过去的几年里Windows操作系统历经数次换代更新,变得越来越庞大、复杂,功能也越来越强大,但是这款小游戏依然保持原来的容貌,可见这款小游戏受到越来越多人的喜爱。本设计以微软系统扫雷游戏为基本原理,通过Visual C+6.0开发的一款简单的扫雷游戏。1.2研究方案本设计通过Visual C+6.0来开发一款简单的扫雷游戏,运行代码生成的可执行文件,点击“开始游戏”按钮在蓝色的方块内按下鼠标的左键可以翻开当前的方块,翻开后会显示空白、数字和地雷3种情况,玩家可以用鼠标右键标记地雷,并可以双击鼠标左键翻开的数字周围的方块。在设计扫雷游戏时,现在对话框中绘制

7、软件的背景位图,绘制的位图是以一个网格为单位的,然后在网格中随机布雷,并通过算法计算无雷网格中应该显示的数字。如果当前网格周围的8个网格中没有地雷,则显示为空地,否则,周围的8个网格中有几个地雷则显示数字几。当玩家翻开空地时,会自动翻开空地周围的数字,通过鼠标右键可以标记地雷,并可以取消地雷标记,玩家胜利的条件是将所有的地雷都标记出来。如果标记的位置都是地雷的位置则游戏胜利,标记数和地雷数是相同的,所以当标记用完而游戏还没有结束时,说明标记的地雷有错误,这样扫雷游戏即结束。1.3本文安排简述扫雷游戏的背景,从用户的需求分析游戏设计的功能和方法,从设计可行性方向考虑游戏的设计方案和执行策略。本文

8、采用MFC Windows程序设计开发一款简单的扫雷游戏,首先进行游戏的总体设计与分析,主要分析游戏的功能、构想、设计过程。其次,分析游戏的各个模块的设计思路,详细介绍游戏窗体的设计方法,随机布雷的方法,雷区如何判断的方法。总结游戏的设计过程,从中得到的经验。第二章 游戏的总体设计与分析2.1需求分析扫雷游戏是Windows操作系统自带的一款简单的单人游戏,是最早的计算机图形游戏之一。扫雷游戏在Windows用户中十分流行,自从Windows3.1以来一直绑定在里面作为Windows提供的熟悉鼠标操作的辅助工具。游戏通过基本的逻辑判断清楚非雷区,最终把一个雷区中所有的地雷都准确的标注出来,同时

9、也一直是程序设计爱好者热衷的编程实例。随着游戏业的发展,游戏为消费者提供丰富多彩的虚拟空间,使消费者可以享受游戏世界的乐趣。扫雷游戏就是一款比较经典的游戏,游戏玩家可以锻炼自己的思维能力,为生活增添乐趣。程序员可以使用自己学习过的程序设计语言,提高自身的编程能力。另外,实现它的方法很多,也可以用不同的算法实现。2.2游戏功能介绍扫雷游戏的基本功能:点击鼠标左键于未知区域,如果未知区域有雷,游戏停止,显示所有的地雷。如果没雷,则显示周围雷数。如果周围没雷,则再查看周围八个区域是否有雷直到有雷为止并显示,这其实是一个递归过程。点击鼠标右键于未知区域,用小红旗标志,将其置为有雷而不管是否真的有雷。雷

10、区上部左侧位置为开始游戏按钮。雷区上部中间显示剩余的总雷数。雷区上部右侧显示扫雷的时间。2.3设计构想扫雷是Windows操作系统自带的一款游戏,在大多数电子设备中我们都可以看到,这款游戏操作简单,规则也不难,根据不同等级,玩家可以训练自己的逻辑思考能力。作为编程人员,在学习编程语言之后也可以锻炼自己的编程能力和逻辑思维能力。本设计中采用MFC程序设计,开发一款简单的扫雷游戏。这款游戏的规则是:在不点击任何藏有地雷的方块情况下,以最快的速度找出所有的地雷。如果在点击方块的过程中,不小心翻开(踩到)藏有地雷的方块,则宣告失败(游戏结束),惟有将所有不含地雷的方块掀开,游戏才算成功。游戏的操作方面

11、主要以鼠标为主,当鼠标指针对准未翻开的方块按下左键时即表示翻开方块,当鼠标指针对准未翻开的方块按下右键时即表示标示或疑示地雷,反复按下右键则方块会以(未标示 标示 疑似)三者关系不断循环。游戏者可以通过地雷区内的数字提示了解以数字为中心的其周边八个方格内所含的地雷数,假若翻开的方块显示数字“3”,则表示以其为中心的周边方块内藏有3个地雷。2.4设计过程1.新建一个基于对话框的应用程序,将窗体改为“扫雷程序马仲岳”,选择Minimize box属性,使对话框具有最小化按钮。2.向新建的工程中导入12个BMP位图资源,并且向对话框中添加两个静态的文本控件分别为(剩余地雷数:)和(游戏时间:)。3.

12、处理鼠标左键的按下事件,在该事件的处理函数中根据网格状态进行显示。如果是空地,则翻转周围网格,如果是地雷结束游戏。4.如何判断按下的方块是非地雷,这是整个游戏的核心,我们可以通过递归的观念来检查周边的方块是否含有地雷及是否继续往外翻开1,功能图如2.1所示:图 2.1游戏总体实现框架第三章 游戏的具体实现过程3.1扫雷游戏的模块实现扫雷游戏主要包括两大部分:一个部分是布雷,该部分主要将雷随机布置在游戏区域内,以避免出现重复布雷。另一部分是扫雷,该部分包括判断鼠标左键点击某区域该区域是否是雷,如果是雷该如何操作,如果不是雷该如何操作,鼠标右键点击某区域时如果判断该区域是雷则加以标记,如果不是雷也

13、加以标记,以及当鼠标双击某区域时,判断与该区域相邻的其它8个区域是否是雷并做一个标记。游戏主窗体的创建:启动Visual C+ 6.0后,选择新建工程,Visual C+ 6.0提供了用户可能需要的各种类型的应用程序模板。选择MFC AppWizard(exe)项目,输入工程名称和位置,将创建一个新的工程如图3.1所示2:图3.1 创建一个新的工程选择基于单对话框如图3.2所示:图3.2选择一个基于单对话框的工程创建窗体界面如图3.3所示:点击对话框单击鼠标右键打开属性,将标题改为“扫雷游戏马仲岳”,添加2个Static控件,1个Caption改为“剩余地雷数:”,1个Caption改为“游戏

14、时间:”图3.3窗体界面向新建工程中导入十二张BMP位图如图3.4所示:图3.4引用的位图文件初始化网格界面代码:3.2扫雷核心-布雷算法设计3.2.1随机布雷算法的设计随机布雷算法是以下两个函数的组合: void srand(unsigned int seed);/seed 为随机种子 srand (unsigned)time(NULL);/利用系统时间作为随机种子,因为系统内置的时钟是在时刻变化的3。int rand(void);/产生(0,RAND_MAX)之间的随机整数,RAND_MAX为十六进制的0x7fff,可进行一些算术运算,使之产生所需要的任意随机数。srand(time.Ge

15、tHour()+time.GetMinute()+time.GetSecond();/当前系统时间为随机种子CTime time;time = CTime:GetCurrentTime();/调用系统时间void CSaoLeiDlg:SetRandMine()/即利用系统时间作为随机种子,因为系统内置的时钟是在时刻变化的。使用rand函数产生随机数:int rand(void)/产生所需要的任意随机数。int x=rand()%row;int y=rand()%col;3.2.2确定周围方块的数字把整个游戏区域看成一个 m_GridNumij的二维数组如图3.5所示:图3.5随机的二维数组在

16、SaoLeiDlg.h文件中定义GRID m_GridNum2020;/网格void SetRecentGrid(GRID *pGrid);/声明成员方法GRID* GetGridRect(CRect rc);用void CShaoLeiDlg:SetRecentGrid(GRID *pGrid)设置一个节点CRect rect = pGrid-m_Rect; 假设m_Rectij为一个二维数组,可以将周围8个节点的坐标表示出来,分别为m_Rect i-1j-1, m_Rect i-1j, m_Rect i-1j+1m_Rect ij-1, ,m_Rect ij+1m_Rect i+1j-1,

17、 m_Rect i+1j, m_Rect i+1j+1通过GRID* CShaoLeiDlg:GetGridRect(CRect rc)函数把表示的节点放在m_GridNumij的网格中,代码如下。用绘图代码在游戏区域显示随机布置的雷和周边情况,在OnPaint函数中添加如下代码:3.3扫雷鼠标事件的处理1.判断雷区和非雷区。扫雷时需要判断每个格子的状态,使用void CSaoLeiDlg:InitializeGrid()函数初始化网格的状态,使之对应不同的BOOL。在二维、三维游戏里,有一种简单的构造地图的方法,即将地图划分为m*n的规格格子,使每一个格子对应二维数组中的一项,当鼠标单击时,

18、通过找出鼠标点击区域,找到相应的格子,判断格子状态来替换相应的位图。具体算法思想如下:1) 在应用程序的客户区划分一块区域,将该区域划分为n*m相同大小的格子;2) 将每一个格子的状态对应到二维数组的相应项上;3) 当鼠标点击某一块区域时,首先判断是否在各种区域,然后再通过鼠标的坐标找到相应的格子;4) 查询格子的状态,从而调用相应的位图进行位图替换;说明:Windows的消息响应机制对于编写一些小游戏是非常方便的,当编写大型2D或3D游戏时,Windows API 就显得有些不足,此时应使用DirectX或OpenGL等大型图形库来进行设计及编码。2.鼠标左键事件的处理。分两种情况:1) 当

19、相应区域不是雷区时,挖开区域,并且若能据此判断周围区域也不是雷区则将周围相应区域也挖开;2) 当区域是雷区时,则界面中所有的雷区同时“炸开”:显示一个提示框(你输了!)同时雷区和非雷区显示出来,若点击“确定”按钮,弹出是否开始游戏有“是”和“否”两个按钮。3.对单击鼠标右键事件处理第一次用右键单击某个区域时,插上一面小红旗,此时单击左键没有任何变化,第二次用右键单击时恢复原状4。4.双击左键事件处理在展开的区域,并且已经确定了周围的雷数,双击可以叠加展开非雷区域,以减少用户的单击操作。3.4时间显示方法第四章 程序的运行和调试4.1游戏初始化界面游戏初始化界面如图4.1所示:运行Visual

20、C+6.0 程序编译Debug目录下的Saolei.EXE,或者直接编译程序得到如下图所示的初始化界面。图4.1游戏初始化界面4.2游戏布雷界面游戏布雷界面如图4.2所示:运行程序,单击“开始游戏”按钮,在蓝色的方块内按下鼠标左键可以翻开当前的方块,翻开后会显示空白、数字和地雷三种情况。玩家可以用鼠标右键标记地雷,并且可以双击鼠标左键翻开数字周围的方块。通过运行程序把布雷情况显示出来。图4.2游戏布雷界面4.3游戏失败界面游戏失败界面如图4.3所示:当游戏玩家点击到埋有地雷的小方块是游戏失败,此时弹出一个“你输了”的对话框,点击“确定”,提示是否继续游戏。如果是则继续游戏,否则退出游戏。图4.

21、3游戏失败界面第五章 游戏的设计总结随着扫雷游戏的开发完成,游戏中预期的主要功能也基本实现。本设计以Visual C+ 6.0作为前台开发工具,Visual C+ 6.0以简单、易用等优点成为开发本系统的首选工具。本论文阐述了扫雷游戏的分析与设计的全过程,并在论文中相应的位置插入了图片、流程图以及一些具有技巧性的程序代码,更加清晰的描述了该游戏是如何实现的。扫雷游戏是一款益智类游戏,该游戏与那些网络游戏和3D游戏相比,它有编写简单容易上手等特点,非常适合人们在完成工作的时候适当的娱乐要求。这些小游戏大都是以益智和娱乐为目的,不仅给紧张工作的人们以放松,还可以让人们的大脑得到开发。本设计中使用C

22、Wnd的Invalidate方法来实现屏幕刷新,Invalidate方法的频繁使用会造成图像的闪烁。可使用InvalidateRect方法的使用需要不断计算刷新的区域,所以需要不断地计算显示数字的区域。由于学习Visual C+ 6.0的时间比较短,其中的很多知识还没有了解和掌握,在扫雷游戏中有些功能还不够完善。例如,在扫雷游戏中不能实现玩家成绩的排名,加入音乐,Windows系统自带的“笑脸”部分的编程,游戏等级的设置,还没有做到让计算机自动扫雷的目的。只是实现了简单的扫雷功能,希望自己在以后的学习中不断的充实自己的知识结构,把扫雷游戏的功能进一步完善,使它成为一个更具有实用价值的游戏软件,

23、同时也恳请各位领导和老师给予批评指正。致谢经过本次学年论文的设计,我学到了许多关于Windows程序设计、MFC Windows程序设计、C+程序设计知识,虽然过程中遇到了许多困难,但都在老师的帮助下顺利解决。在此,感谢李振江老师一直以来对我的教导,我要对他的细心帮助和指导表示由衷的感谢。在这段时间里,我在他身上学到了许多的专业知识,还有生活中的平易近人。此外,他严谨的治学态度和认真的工作精神值得我去学习。在我本次的课程设计中,李老师的指导给予了我极大的帮助,使我对整个课程设计的思路有了总体的把握,并耐心的帮我解决了许多实际问题,使我有了很大的收获。并在整个开发过程中提出了许多可行性意见,并给我解决了一些专业性问题。参考文献1 明日科技.Visual C+ 程序开发范例宝典M.第1卷.北京:人民邮电出版社, 2008 :821-825.2 Jeff Prosise.MFC Windows 程序设计M.第2版.北京:清华大学出版社, 2007.5 :721-755.3 Stanley B.Lippman Josee Lajoie Barbara E.Moo.C+ PrimerM.第4版.北京:人民邮电出版社, 2006.3 :367-392.4 赵大伟 肖周芳 张艳.从扫雷游戏浅谈一些算法问题D.江苏 徐州:中国矿业大学计算机科学与技术系, 2008.忽略此处.

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1