扫雷游戏课程方案设计书.docx
- 文档编号:17144980
- 上传时间:2023-07-22
- 格式:DOCX
- 页数:35
- 大小:924.61KB
扫雷游戏课程方案设计书.docx
《扫雷游戏课程方案设计书.docx》由会员分享,可在线阅读,更多相关《扫雷游戏课程方案设计书.docx(35页珍藏版)》请在冰点文库上搜索。
扫雷游戏课程方案设计书
课程设计任务书
学生姓名:
专业班级:
指导教师:
工作单位:
题目:
初始条件:
要求完成的主要任务:
(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)
时间安排:
指导教师签名:
年月日
系主任(或责任教师)签名:
年月日
经典扫雷游戏程序设计
摘要······································································3
1、引言····································································4
1.1课题背景及意义·······················································4
1.2VisualC++发展概况···················································5
1.3关于本课题···························································6
2、游戏的总体分析与设计····················································7
2.1游戏功能简介·························································7
2.2设计构想·····························································7
2.3流程规划·····························································8
3、扫雷游戏的具体实现过程·················································9
3.1扫雷游戏模块的实现···················································9
3.1.1扫雷游戏主窗体的创建············································9
3.1.2主界面控制菜单的设计···········································13
3.2扫雷游戏核心-----布雷算法设计·········································13
3.3扫雷鼠标事件的处理··················································20
3.4扫雷其它处理························································27
3.4.1难度设置菜单消息处理···········································27
3.4.2背景音乐菜单消息处理···········································28
3.4.3其它处理························································29
4、扫雷游戏程序的调试与运行···············································29
5、扫雷游戏设计总结·······················································31
6、致谢···································································31
7、参考文献·······························································32
Abstract
Gameindustrydevelopsbyleapsandbounds,andithasagreatimpactonthewaypeopleliveandentertainment,gamesprovideconsumerswithavarietyofvirtualspace,sothatconsumerscanenjoythefreefunofthevirtualworld,achievethedreamthatmayneverachieveinreallife,andsatisfythepsychologicalandspiritualneedsconsumer.
TheSweepMineGameisasmallgamethattheWindowsoperatingsystemhave.OverthepastfewyearstheWindowsoperatingsystemhasexperiencedanumberofchang,andbecomemuchlargerandmorecomplexed.However,thislovelygameinanyversionoftheWindowsoperatingsystemhaskeeptheoriginalappearance.Almosteverycomputerusershavecomeintocontactwithit,andlovethisgame.
TheSweepMineGameisanclassicallittlegame,andtherearemanywayscanachieveit,wecanusemanydifferentalgorithmsandlanguages,suchasC,C++,VB,JAVAandsoon.ThisstudyisbasedonVisualC++6.0todesignedandmadethesweepminegame,it’sfunctionissimilartothegamethattheWindowsoperatingsystemhas.Firstweintroducedthewholeideaofmakingthegameandtheprocessplanningofthegamedesign,thenintroducedthemethodofthelayoutofminefieldsandminesrandomlygenerated.Andfocusesontheprocessofdealingwiththeincidentinthegame,amongthem,themouseeventsandclearanceofunexplodedlandminesaroundtheboxarethetwomostimportantthing,themouseeventsistousethemessagethatthemousegivetounderstandthetheuser'sintent,thenmakethecorrespondingaction,andclearanceofunexplodedlandminesaroundtheboxhasbecamesimplywiththeintroductionofthe"recursive".
Keywords:
SweepMine,VisualC++6.0,Affairs,Recursion
摘要
游戏业发展一日千里,该行业极大的影响和改变了人们的生活和娱乐方式,游戏为消费者提供丰富多彩的虚拟空间,使消费者可以自由自在的享受虚拟世界的乐趣,实现自己在现实生活着那个可能永远不能实现的梦想,满足了消费者的心理和精神需求。
扫雷游戏是Windows操作系统自带的一个小游戏,过去的几年里Windows操作系统历经数次换代,变得越来越庞大、复杂,但这个可爱的小游戏在任何版本的Windows操作系统里去却依然保持着原貌。
但几乎每个电脑使用者都接触过它,并且深爱着这款小游戏。
扫雷游戏是比较经典的一款小游戏,实现它的方法很多,可以用很多不同算法和语言实现,如C,C++,VB,JAVA等。
本论文研究的是以VisualC++6.0为开发环境,设计并开发一款扫雷游戏,其功能类似于Windows操作系统自带的扫雷游戏。
论文首先介绍了制作游戏的整体思路及整个游戏设计的流程规划,然后介绍了雷区的布置及地雷随机产生的实现方法;重点介绍了在游戏过程中各事件的处理,其中又以鼠标事件和清除未靠近地雷区方块这两方面最为最要,鼠标事件是利用鼠标所发出的信息了解使用者的意图,进而做出相对应的动作,而清除未靠近地雷区方块由于引进了“递归”这个概念而使其简单化。
关键字:
扫雷;VisualC++6.0;事件;递归
1引言
1.1课题背景及意义
当前随着计算机的深入普及,越来越多的人有了个人电脑,人们运用计算机完成许多重要的工作,计算机在人们的生活中变的越来越来重要。
随着计算机的应用和发展计算机已经不单纯是一个工作工具,人们越来越重视计算机的娱乐性了,近年来游戏产业规模持续成长,全球每年游戏业总产值已经突破200亿美金,远远超越好莱坞电影产业以及音乐娱乐事业,而成为目前娱乐事业的最大主流。
不过游戏产业光鲜亮丽的背后,却也隐含着高风险、高成本的危机,显示游戏产业慢慢步入“微利时代”。
目前整个游戏产业的运作模式已经跟好莱坞电影产业的运作模式相同,电影产业有制片、发行、宣传等分工,游戏产业亦同,由专业的游戏研发小组负责研发游戏,也有如微软、美商艺电这类国际级大厂负责游戏发行,甚至连“游戏制作人”也被培养成明星一样成为一种招牌,如任天堂有王牌制作人宫本茂、SEGA有铃木裕、KONAMI有小岛秀夫、CAPCOM有三上真司、TECMO有板垣伴信...等,明确的游戏产业分工的确有助于游戏产业的规模发展与进化,但也无形中让游戏开发成本大增。
为了降低游戏开发成本,开发娱乐性强成本低的游戏就成为当前的主要课题,在这种趋势下各种小型的低成本的游戏软件应运而生。
在这其中,系统自带的小游戏也占据了相当重要的地位,与那些网络游戏和3D游戏相比,它有编写简单容易上手等特点,非常适合人们在完成工作的时候适当的娱乐要求。
这些小游戏大都是以益智和娱乐为目的,不仅给紧张工作的人们以放松,还可以让人们的大脑得到开发。
这些小游戏包括扫雷,弹球,纸牌等等。
而本课题就是扫雷游戏的设计。
1.2VisualC++发展概况
VisualC++是一个功能强大的可视化软件开发工具。
自1993年Microsoft公司推出VisualC++1.0后,随着其新版本的不断问世,VisualC++已成为专业程序员进行软件开发的首选工具。
虽然微软公司推出了VisualC++.NET(VisualC++7.0),但它的应用的很大的局限性,只适用于Windows2000,WindowsXP和WindowsNT4.0。
所以实际中,更多的是以VisualC++6.0为平台。
VisualC++6.0不仅是一个C++编译器,而且是一个基于Windows操作系统的可视化集成开发环境(integrateddevelopmentenvironment,IDE)。
VisualC++6.0由许多组件组成,包括编辑器、调试器以及程序向导AppWizard、类向导ClassWizard等开发工具。
这些组件通过一个名为DeveloperStudio的组件集成为和谐的开发环境。
VisualC++它大概可以分成三个主要的部分:
1.DeveloperStudio,这是一个集成开发环境,我们日常工作的99%都是在它上面完成的,再加上它的标题赫然写着“MicrosoftVisualC++”,所以很多人理所当然的认为,那就是VisualC++了。
其实不然,虽然DeveloperStudio提供了一个很好的编辑器和很多Wizard,但实际上它没有任何编译和链接程序的功能,真正完成这些工作的幕后英雄后面会介绍。
我们也知道,DeveloperStudio并不是专门用于VC的,它也同样用于VB,VJ,VID等VisualStudio家族的其他同胞兄弟。
所以不要把DeveloperStudio当成VisualC++,它充其量只是VisualC++的一个壳子而已。
这一点请切记!
2.MFC,从理论上来讲,MFC也不是专用于VisualC++,BorlandC++,C++Builder和SymantecC++同样可以处理MFC。
同时,用VisualC++编写代码也并不意味着一定要用MFC,只要愿意,用VisualC++来编写SDK程序,或者使用STL,ATL,一样没有限制。
不过,VisualC++本来就是为MFC打造的,VisualC++中的许多特征和语言扩展也是为MFC而设计的,所以用VisualC++而不用MFC就等于抛弃了VisualC++中很大的一部分功能。
但是,VisualC++也不等于MFC。
3.PlatformSDK。
这才是VisualC++和整个VisualStudio的精华和灵魂,虽然我们很少能直接接触到它。
大致说来,PlatformSDK是以MicrosoftC/C++编译器为核心(不是VisualC++,看清楚了),配合MASM,辅以其他一些工具和文档资料。
上面说到DeveloperStudio没有编译程序的功能,那么这项工作是由谁来完成的呢?
是CL,是NMAKE,和其他许许多多命令行程序,这些我们看不到的程序才是构成VisualStudio的基石。
VisualC++之所以具有如此广泛的用途是因为它具有以下的特点:
(1)真正的面向对象编程,使开发人员不用加入太多的代码,加快了系统开发的速度。
(2)可视化的编程方法以及向导的功能,使开发人员不用加入太多的代码就可以开发出标准的Windows程序。
(3)数据访问的特性,允许对包括MicrosoftSQLServer和其他企业数据库在内的大部分数据库格式建立数据库和前端应用程序,以及可调整的服务器端部件等。
(4)通过ActiveX技术可使用其他应用程序提供的功能,例如MicrosoftWord字处理器、MicrosoftExcel电子数据表及其他Windows应用程序,甚至可直接使用VisualBasic创建的应用程序和对象。
(5)Internet功能强大,使用户很容易在应用程序内通过Internet或企业内部网(Intranet)访问文档和应用程序,或者创建Internet服务器应用程序。
(6)已完成的应用程序是真正的.exe文件,您可以自由发布。
1.3关于本课题
随着世界经济的长足发展和计算机技术的日益成熟,计算机被应用到人类活动的各个领域,各种应用软件也相继问世,这其中有相当一部分是游戏软件。
使用游戏软件自然是为了满足人们对娱乐性的要求,而有些软件大都采用3D设计对系统配置的要求较高。
在众多游戏软件中,也不乏一些小游戏的身影,它们对系统的配置要求较低。
能够满足人们对娱乐性的需求,是人们在完成工作娱乐时候的最好选择。
现在越来越多的人投入到这种小游戏的开发当中,它已经成为一类必不可少的游戏软件。
在各种操作系统中都附带了一些小的游戏,而这些游戏也成为电脑用户软件中不可或缺的一部分。
作为本系统的开发工具,MicrosoftVisualC++6.0成为首选。
它具有可视化的编程界面、详细的提示、以及完善的帮助文档,使得软件开发人员感到无比的亲切感。
2游戏的总体分析与设计
2.1游戏功能简介
当前各种游戏软件层出不穷。
因为游戏的开发成本非常大,所以游戏的开发具有一定的风险性,但是一些小游戏的开发具有成本小,编写简单的优势,所以这些小游戏在游戏开发中也占有一席之地。
在这类小游戏中包括益智类游戏,它以画面精美游戏方法简单等特点得到大家的认可。
成为人们在工作之余不可或缺的好伙伴。
针对真种情况我用VB编写了扫雷这款小游戏。
下面对该游戏的功能做个简单的介绍。
扫雷游戏的基本功能:
点击鼠标左键于未知区域,如果未知区域有雷,游戏停止,显示所有的地雷。
如果没雷,则显示周围雷数,如果周围没雷,则再查看周围八个区域是否有雷直到有雷为止并显示,这其实是一个递归过程。
点击鼠标右键于未知区域,则将其置为有雷而不管是否真的有雷。
可选择初、中、高三级并可自定义雷数和区域大小。
雷区上部左侧显示总雷数减被标明有雷区域的数目。
雷区上部中间位置显示一按钮用于开局和显示鼠标动作的结果。
雷区上部右侧显示扫雷的时间。
将雷全部扫清后,则显示一对话框将你的姓名记入排行榜。
2.2设计构想
相信大多数使用Windows操作系统的使用者,对这款游戏都不陌生。
这款游戏不止操作简单,规则也不难,再加上游戏速度的控制机制得宜,让整个游戏在操作过程中充满了快乐与紧张的气氛。
除了游乐当中能带给使用者快乐之外,游戏的设计内容无形中也不断训练使用者的逻辑思考能力,对于依靠高度脑力工作的现代人,都可以通过这个游戏,不时的检验一下自己,所以我们不难发现,在各种可携带的电子产品上都有这款游戏的踪影。
在设计之前,我们先来了解这款游戏的规则。
在不掀开任何藏有地雷的方块情况下,以最快的速度找出所有的地雷。
如果在掀开方块的过程中,不小心翻开(踩到)藏有地雷的方块,则宣告失败(游戏结束),惟有将所有不含地雷的方块掀开,游戏才算成功。
游戏的操作方面主要以鼠标为主,当鼠标指针对准未翻开的方块按下左键时即表示翻开方块,当鼠标指针对准未翻开的方块按下右键时即表示标示或疑示地雷,反复按下右键则方块会以未标示→标示→疑似三者关系不断循环。
游戏者可以通过地雷区内的数字提示了解以数字为中心的其周边八个方格内所含的地雷数,假若翻开的方块显示数字“3”,则表示以其为中心的周边方块内藏有3个地雷。
当按下的方块不是地雷,且周边八个方块也都没有地雷时,方块会以被翻开方块的八个方向将空白方块翻开。
2.3流程规划
流程规划大致上可以分为三个部分,分别为:
画面初始、游戏者按下第一个方块和为非地雷方块时展开。
画面初始时,以游戏者最后一次设定的地雷区大小为范围画出地雷区,但此时并未产生地雷。
当游戏者按下第一个方块时产生地雷资料并启动定时器,为何在游戏者按下第一个方块才产生地雷资料呢?
其主要的用意在于不要让游戏者第一次就踩到地雷,这样在某种程度上可以提高游戏者游玩的气氛。
接着就是如何判断按下的方块是非地雷时的处理,这也是整个游戏的技术核心,我们可以通过递归的观念来检查周边的方块是否含有地雷及是否继续往外翻开。
基于以上思路,绘制功能图如下:
3.扫雷游戏的具体实现过程
3.1扫雷游戏模块的实现
扫雷游戏的开发主要包括两大部分:
一个部分是布雷,该部分主要将雷随机布置在游戏区域内,以避免出现相同的雷区布置地图。
另一部分是扫雷,该部分包括判断鼠标左键点击某区域该区域是否是雷,如果是雷该如何操作,如果不是雷该如何操作,鼠标右键点击某区域时如果判断该区域是雷则加以标记,如果不是雷也加以标记,以及当鼠标双击某区域时,判断与该区域相邻的其它8个区域是否是雷并做一个标记。
下面首先介绍第一部分之一——扫雷主窗体创建。
3.1.1扫雷游戏主窗体的创建
启动VisualC++6.0后,选择新建工程,VisualC++6.0提供了用户可能需要的各种类型的应用程序模板。
如果是这种情况,选择MFCAppWizard(exe)项目,输入工程名称和位置,将创建一个新的工程如下:
选择基于Dialogbased:
其它的默认,建立新的工程。
下面介绍一下如何创建窗体界面:
首先,转换窗口到资源编程窗口,修改主对话框的Caption属性为“周龙扫雷游戏程序设计”,添加2个Static控件,1个Caption改为“剩余雷数”,1个Caption改为空用来表示剩余的雷数。
其设计如下:
当然,这只是设计的初始的界面,我们还需要在程序中添加其它代码以初始化和美化运行的主界面。
添加如下代码:
voidOnPaint()
{
CDCmemdc;
CBitmapbk;
bk.LoadBitmap(IDB_BACK);
memdc.CreateCompatibleDC(pDC);
pDC->BitBlt(0,0,600,600,&memdc,0,0,SRCCOPY);
}
主要是美化运行界面,如下:
接下来要绘制鼠标操作区域,即游戏区域。
添加绘制棋盘函数DrawChessBoard()
如下:
voidCShaoLeiDlg:
:
DrawChessBoard()
{
CDC*pDC=GetDC();
CPenpen(PS_SOLID,1,RGB(0,0,0));
pDC->SelectObject(&pen);
for(inti=0;i { pDC->MoveTo(x+cx*(i),y); pDC->LineTo(x+cx*(i),y+row*cy); } for(intj=0;j { pDC->MoveTo(x,y+(j)*cy); pDC->LineTo(x+col*cx,y+(j)*cy); } } 然后的运行结果如下: 3.1.2主界面控制菜单的设计 接下来回到资源编程界面,编写菜单资源,用来控制扫雷的过程,以及难度选定,和背景音乐等。 (1)“设置菜单“包含: 开始,初级,中级,高级,音乐开,音乐关,退出 其中,音乐开包含默认的音乐和打开本地音乐两个子菜单项。 (2)“帮助“菜单获取该软件的版本信息。 如下: 将菜单添加到主界面,至此主窗体基本创建完毕。 3.2扫雷游戏核心-----布雷算法设计 (1)扫雷游戏是由很多相同大小的格子组成的,一般计算机中自带的游戏格子规格为9*9,16*15和30*16(第一个数字代表函数,第二个数字代表列数)。 规格不同,需要埋的地雷数目就不同,这就会涉及到随机埋雷算法,最简单的是一下两种函数的结合: voidsrand(unsignedintseed);//seed为随机种子 一般这样使用该函数: srand((unsigned)time(NULL));//即利用系统时间作为随机种子,因为系统内置的时钟是在时刻变化的。 然后使用如下函数产生随机数: intrand(void)//可尝试(0,RAND_MAX)之间的随机整数,RAND_MAX为十六进制的0X7fff可进行一些算术运算,使之产生所需要的任意随机数。 (2)扫雷游戏还要求在没有雷的地方被点击后就会显示一个数字表示它周围有几
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 扫雷 游戏 课程 方案设计