单机扫雷游戏详细介绍

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1通信与信息工程学院修德博学求实创新单机级扫雷游戏开发2通信与信息工程学院修德博学求实创新(一)设计思路(二)详细设计(三)测试结果单机扫雷游戏3通信与信息工程学院修德博学求实创新(一)单机扫雷游戏—设计思路1•MFC、C++2•全局变量theApp开始3•入口函数WinMain4•调用派生虚函数InitInstance5•窗口的初始化(代码核心)6•进入run函数4通信与信息工程学院修德博学求实创新(二)单机扫雷游戏—详细设计扫雷游戏的开发主要包括两大部分:一个部分是布雷,该部分主要将雷随机布置在游戏区域内,以避免出现相同的雷区布置地图。另一部分是扫雷,该部分包括判断鼠标左键点击某区域该区域是否是雷,如果是雷该如何操作,如果不是雷该如何操作,鼠标右键点击某区域时如果判断该区域是雷则加以标记,如果不是雷也加以标记,以及当鼠标双击某区域时,判断与该区域相邻的其它8个区域是否是雷并做一个标记。(游戏与用户的交互)5通信与信息工程学院修德博学求实创新详细设计1游戏系统资源2游戏功能控制3游戏与用户的交互4游戏结果处理函数6通信与信息工程学院修德博学求实创新1单机扫雷游戏—游戏系统资源菜单资源位图资源声音资源初始化游戏变量初始化游戏绘制游戏界面7通信与信息工程学院修德博学求实创新1.1菜单资源--主要用于游戏的控制及说明菜单资源只有三个菜单选项:第1个菜单选项包括游戏控制的选项;第2个菜单选项包含游戏说明的选项;第3个菜单选项包括数据的发送或者接收。8通信与信息工程学院修德博学求实创新9通信与信息工程学院修德博学求实创新1.2.1位图资源--游戏状态按钮位图彩色状态按钮位图黑白色状态按钮位图10通信与信息工程学院修德博学求实创新1.2.1位图资源--游戏状态按钮位图正常胜利失败方块的展开状态正常11通信与信息工程学院修德博学求实创新1.2.2位图资源—方块的状态位图方块彩色位图方块黑白色位图12通信与信息工程学院修德博学求实创新1.2.2位图资源—方块的状态位图初始状态雷状态爆炸状态标志雷状态错误标志雷状态数字状态下压状态未知状态下压未知状态13通信与信息工程学院修德博学求实创新1.2.3位图资源--数字位图彩色数字位图黑白色数字位图14通信与信息工程学院修德博学求实创新雷的剩余数量游戏已花费时间15通信与信息工程学院修德博学求实创新1.3声音资源当游戏开始后,开始计时,IDR_WAVE_CLOCK对应的声音资源将被播放,每个一秒钟播放一次与时钟显示同步。当游戏失败时,将播放IDR_WAVE_DEAD对应的声音资源。当游戏胜利是将播放IDR_WAVE_VICTORY对应的声音资源16通信与信息工程学院修德博学求实创新与游戏的功能相对应,所有的功能都对应这一个实现体。如:等级选择的功能对应着等级选择的实现、游戏交互的功能对应着游戏交互的实现。游戏主要的功能基本都在主游戏窗体类实现。该设计主游戏模块中实现的游戏界面的绘制、游戏初始化、用户交互、绘制游戏界面并初始化游戏。但无论是何种操作,在进行游戏之前都需要初始化游戏数据、绘制游戏界面并初始化游戏,这是实现游戏的第一步。17通信与信息工程学院修德博学求实创新1.4初始化游戏变量LoadWaveSrc()函数用于载入声音资源FreeWaveSrc()函数用于释放声音资源SizeWindow()函数用来初始化窗体中重要部分的位置OnInitMenu()重载菜单初始化函数1.5初始化游戏InitGame()函数用于游戏的初始化LoadBitmap()函数根据当前颜色状态为游戏载入不同的位图资源18通信与信息工程学院修德博学求实创新1.6绘制游戏界面主窗体的OnPaint()函数实现绘制游戏界面的功能,利用双缓冲的绘图方法。双缓冲技术绘图—避免出现闪烁现象19通信与信息工程学院修德博学求实创新1.6绘制游戏界面DrawButton()函数实现了绘制状态按钮的功能。其实状态按钮并不是真正按钮,它只是一个绘有表情及3D边框的一片区域,该片区域根据当前的游戏状态代表按钮上的表情DrawNumber()函数实现绘制游戏当前剩余雷数,以及当前游戏时间的功能,它所绘制的雷数及时间随着游戏的进行不断地变化着DrawMineArea()函数实现绘制主游戏区的功能,它根据区域中各个方块的属性来绘制这些方块,20通信与信息工程学院修德博学求实创新2单机扫雷游戏--游戏功能控制游戏菜单选项帮助菜单选项菜单选中状态控制函数21通信与信息工程学院修德博学求实创新2.1.1游戏菜单选项--开局子菜单开局子菜单用于初始化游戏,游戏的等级、特性都没有变化,只是计时清零后初始化游戏。(OnMemuStart)22通信与信息工程学院修德博学求实创新用户自定义选项的实现基本也类似,只有这些参数需要用户自己输入,因此需要添加一个用户自定义游戏模块,它主要为用户提供了输入行数、雷数及雷数的功能,界面设计如图所示。SetCustom()函数用户设置这3个值(m_uNumber,m_uWidth,m_uHeight)2.1.2游戏菜单选项—等级设置菜单23通信与信息工程学院修德博学求实创新24通信与信息工程学院修德博学求实创新2.1.3游戏菜单选项--游戏特效菜单游戏特效菜单选项,可以控制游戏的颜色、声音等OnMemuColor,OnMemuSound,OnMemuMark,25通信与信息工程学院修德博学求实创新2.1.4游戏菜单选项—退出菜单退出菜单选项OnMemuExit()是当用户选择这个菜单选项时,无论游戏处于什么状态都将直接结束游戏并退出程序。26通信与信息工程学院修德博学求实创新2.2帮助菜单选项帮助菜单只有两个子菜单:一个是联机帮助OnMemuHelpUse();一个是游戏版本的说明OnMemuAbout()。27通信与信息工程学院修德博学求实创新2.3菜单选项的选中状态控制函数等级与特效控制菜单选项都有选中状态控制函数,以提示当前游戏的等级及特效应用情况。SetCheckedLevel()//设置游戏级别SetCheckedColor()//颜色菜单选项SetCheckedSound()//声音菜单选项28通信与信息工程学院修德博学求实创新3单机扫雷游戏--游戏与用户的交互鼠标单击事件的处理鼠标左键抬起事件的处理鼠标左右键同时按下事件的处理鼠标左右键同时抬起事件的处理鼠标右键按下事件的处理鼠标右键抬起事件的处理29通信与信息工程学院修德博学求实创新3.1鼠标单击事件的处理游戏中,鼠标单击是用户最多的游戏动作,可单击状态按钮开始游戏,也可单击主游戏区展开用户认定的非雷方块。OnLButtonDown()//鼠标单击事件的处理消息处理机制30通信与信息工程学院修德博学求实创新3.2鼠标左键抬起事件的处理当鼠标左键按下后,由于不知道鼠标的抬起位置只是标识一些状态,并未对游戏进行什么处理。在鼠标左键抬起事件处理函数中,要根据鼠标左键按下事件中的标识及鼠标左键抬起的位置,对当前的游戏状态进行处理。OnLButtonUp()//鼠标左键抬起事件的处理31通信与信息工程学院修德博学求实创新3.3鼠标左右键同时按下事件的处理在游戏中鼠标左右键同时按下时,被按下方块的周围所有未被展开且未被标识的方块都被置为空的状态,以提示用户还有哪些方块需要判断展开或标识。如果周围有被置为未知状态的方块(问号方块)时,则问号方块被置为按下状态的未知按钮。而标识为棋子(雷块标识)时,方块的状态不变。OnLRBtnDown()//鼠标左右键同时按下事件的处理32通信与信息工程学院修德博学求实创新鼠标左右键同时按下时的效果鼠标同时抬起后的效果33通信与信息工程学院修德博学求实创新因为在左右键同时按下事件的处理函数中,将鼠标同时按下方块周围的方块改变了状态。如果方块周围没有被展开,且游戏没有进入失败或胜利的状态,则在鼠标左右键同时抬起函数中,需要恢复这些方块的状态。如果是正常未被标识且未被展开的方块,将从空状态恢复到正常状态,未知状态的方块将从按下状态恢复到正常状态。OnLRBtnUp()//鼠标左右键同时按下后鼠标抬起事件的处理3.4鼠标左右键同时抬起事件的处理34通信与信息工程学院修德博学求实创新3.5鼠标右键按下事件的处理单击鼠标右键可以根据当前方块的状态标注方块的下步状态。如果当前为正常状态,则右击后变成棋子状态,右击后变成正常状态。OnRButtonDown()//鼠标右键按下事件的处理35通信与信息工程学院修德博学求实创新3.6鼠标右键抬起事件的处理鼠标左键按下可对方块进行标识,鼠标右键抬起时需要判断当前是否所有的类块都已经正确地被标识。OnRButtonUp()//鼠标右键的抬起处理36通信与信息工程学院修德博学求实创新4游戏结果处理函数在用户交互的鼠标左键抬起事件处理函数及鼠标右键抬起事件处理函数中,都调用了Victory()函数来判断当前游戏是否胜利。该函数主要根据当前游戏中所有方块的状态来判断用户是否将所有雷块都标识出来,并将所有非雷块全部展开来,判断当前的游戏是否可以转变为胜利状态.Dead()//游戏失败处理函数Victory()//游戏结果处理函数37通信与信息工程学院修德博学求实创新(三)单机扫雷游戏—测试结果菜单项计时器地雷计数器状态按钮雷区38通信与信息工程学院修德博学求实创新游戏的初级界面:9*9个方块10个雷39通信与信息工程学院修德博学求实创新游戏的中级界面:16*16个方块40个雷40通信与信息工程学院修德博学求实创新游戏的高级界面:16*30个方块99个雷41通信与信息工程学院修德博学求实创新分数记录扫雷英雄榜42通信与信息工程学院修德博学求实创新设置雷区自定义的雷区43通信与信息工程学院修德博学求实创新感谢同学们的帮助!!!感谢学长学姐的帮助!!!感谢老师的指导!!!

1 / 43
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功