软件体系结构课程之扫雷游戏.docx
- 文档编号:3623260
- 上传时间:2022-11-24
- 格式:DOCX
- 页数:19
- 大小:201.41KB
软件体系结构课程之扫雷游戏.docx
《软件体系结构课程之扫雷游戏.docx》由会员分享,可在线阅读,更多相关《软件体系结构课程之扫雷游戏.docx(19页珍藏版)》请在冰豆网上搜索。
软件体系结构课程之扫雷游戏
软件体系结构课程之扫雷游戏
开发成员:
代禄礼
学号:
2406070428
开发时刻:
2020-7-5
名目
0、引言…….................................................................................................................2
1、工作打算.................................................................................................................2
1.1、要紧工作时期划分........................................................................................2
1.2、各时期工作任务分解....................................................................................2
2、需求分析.................................................................................................................2
2.1、概述................................................................................................................2
2.2、用户分析........................................................................................................3
2.3、约束条件........................................................................................................3
2.4、功能需求........................................................................................................3
2.5、用户界面需求................................................................................................4
3、设计与实现.............................................................................................................5
3.1、概述.................................................................................................................5
3.2、体系结构.........................................................................................................5
3.3、要紧程序文件.................................................................................................11
3.4、开发坏境以及部署环境要求.........................................................................13
4、测试坏境...................................................................................................................13
4.1、概述..................................................................................................................13
4.2、测试坏境..........................................................................................................13
4.3、测试打算...........................................................................................................13
4.4、测试项目...........................................................................................................14
5、工作总结....................................................................................................................17
5.1、工作成果.............................................................................................................17
5.2、过程分析............................................................................................................17
5.3、体会教训及其分析.............................................................................................18
0引言
扫雷游戏是一直以来比较流行的趣味性游戏之一,其开发过程有一定的技巧和方法,其中涉及到软中断、二维数组、鼠标操作以及图形化函数等方面的知识,本游戏的开发者需要把握部分图形函数的使用,二维数组以及结构体的定义,专门多操作系统都会带有这款游戏,它既能锤炼思维的严密性,又有专门大的乐趣,我个人也比较喜爱这款游戏,因此,我就借那个机会将这款游戏用C++语言将它实现。
1工作打算
1.1要紧工作时期划分
此项目所有的工作均由代禄礼一人完成。
1.2各时期工作任务分解
时期名称
任务名称
任务描述
负责人
协助人
需求分析
确定要实现那些功能
确定不做什么,做什么,以及要实现那些功能
代禄礼
代禄礼
结构设计
对差不多确定的功能进行设计
对差不多确定的功能进行设计
代禄礼
代禄礼
程序设计
对结构设计用代码的形式表达出来
用C++代码将差不多确定的设计用代码来表达
代禄礼
代禄礼
测试
测试
测试看项目中有没有错误
代禄礼
代禄礼
2需求分析
2.1概述
此项目的要紧任务是开发一款趣味性游戏——扫雷。
该项目是用C++语言来实现的。
第一建立一个名为Mine的项目工程,再依照所要求的进行设计。
要求要实现专门多功能,自定义雷区、扫雷英雄榜和胜利后的提示,要紧是图形设计也确实是窗口绘制、菜单设计和算法。
在那个项目中最关键的也确实是如何猎取某个小方块区域相邻8个区域的雷个数,如何猎取某个小方块区域相邻8个区域的已标志状态数。
2.2用户分析
关于用户来讲,最要紧的确实是提高软件质量,不能显现太明显的错误,再者确实是人机界面的设计,因为每个人都喜爱漂亮的界面,因此界面应该是突出点。
2.3约束条件
1、开发者角度:
关于开发者来说开发项目的时刻,人员等因素可能会导致项目的失败。
2、用户的角度:
要紧确实是需求的确定,最难的确实是用户不明白该实现什么,什么才是自己所需要的。
2.4功能需求
1、系统模块设计
本程序包括初始化模块、画图模块和功能操纵模块设计。
2、所要实现的功能
如下图:
该项目要紧实现以上功能,自定义雷区、游戏关心、选择游戏级别。
2.5用户界面需求
用户界面是用户使用该软件是展现在面前的操作窗口。
第一最起码要操作简单,不管明白不计机知识都能够使用,其次确实是美观。
如上图所示:
游戏窗口简单,容易操作,功能齐全。
3设计与实现
3.1概述
我觉得在扫雷游戏中只有两个突出点,也能够说是两个关键点,第一,确实是绘图,也确实是图形设计,第二,算法。
1、绘图要紧分五个点。
绘制笑脸按钮、绘制数字、绘制外壳、绘制雷区、绘制按下扫雷后的数字和重新绘制雷区域的某个小方块。
绘制图形所对应的函数:
绘制笑脸按钮:
voidCMineWnd:
:
DrawButton(CPaintDC&dc)
绘制数字:
voidCMineWnd:
:
DrawNumber(CPaintDC&dc)
绘制外壳:
voidCMineWnd:
:
DrawShell(CPaintDC&dc)
绘制雷区:
voidCMineWnd:
:
DrawMineArea(CPaintDC&dc)
绘制按下扫雷后的数字:
voidCMineWnd:
:
DrawDownNum(MINEWND*mine,UINTnum)
重新绘制雷区域的某个小方块:
voidCMineWnd:
:
DrawSpecialMine(UINTrow,UINTcol)
2、猎取某个小方块区域相邻8个区域的雷个数和猎取某个小方块区域相邻8个区域的已标志状态数。
3.2体系结构
1、类图分析
上图确实是该项目所有类之间的关系,用户直截了当和扫雷英雄榜、自定义雷区、游戏级别、过关提示相关联。
因为游戏级别分为初级、中级和高级,扫雷英雄榜也分为初级、中级、高级,分别记录信息,每个用户能够直截了当查看扫雷英雄榜的记录,然而假如用户胜利过关后能够把自己的信息输入系统会自动储存。
2、序列图
〔1〕、自定义雷区:
当用户打开游戏界面时就会看到〝游戏〞那个按钮,点击选择自定义雷区就能够了。
用户发送要求,当系统受到要求后会弹出一个对话框,用户能够输入所需要的信息,确定就能够输出一个新的游戏界面。
〔2〕、扫雷英雄榜
用户发送要求给系统,当系统受到要求之后就会弹出扫雷英雄榜的对话框,当用户胜利过关后输入自己的信息,系统会自动储存。
〔3〕、选择游戏级别
用户发送要求给游戏菜单,收到要求后系统会自动弹出游戏选择对话框,用户能够按照自己的需要进行选择。
〔4〕、游戏关心
用户发送要求给系统,系统接收到用户的要求后会弹出游戏关心的所有内容。
3、状态图
〔1〕、自定义雷区
〔2〕、扫雷英雄榜
〔3〕、选择游戏级别
〔4〕、游戏关心
3.3要紧程序文件
3.3.1、在此程序中定义了以下几个类:
1、创建窗口类类——Mine
2、游戏主窗口类——MineWnd
3、自定义雷区类——DlgCustom
4、扫雷英雄榜类——DlgHero
5、声音处理类——Sound
6、辅助工具类——Help
3.3.2、数据结构设计
结构体定义:
typedefstruct
{
UINTuRow;//所在雷区二维数组的行
UINTuCol;//所在雷区二位数组的列
UINTuState;//当前状态
UINTuAttrib;//方块属性
UINTuOldState;//历史状态
}MINEWND;//雷方块结构体
3.3.3、函数功能描述
1、CMineWnd:
:
SaveConfig()功能是储存所猎取的信息。
2、CMineWnd:
:
InitGame()功能为游戏的初始化。
3、CMineWnd:
:
LayMines(UINTrow,UINTcol)要紧用来布雷。
4、CMineWnd:
:
GetAroundNum(UINTrow,UINTcol)猎取某个小方块区域相邻8个区域的雷个数
5、CMineWnd:
:
GetAroundFlags(UINTrow,UINTcol)猎取某个小方块区域相邻8个区域的已标志状态数
6、CMineWnd:
:
IsMine(UINTrow,UINTcol)判定是否为雷
7、CMineWnd:
:
IsInMineArea(UINTrow,UINTcol)判定是否在雷区域
8、CMineWnd:
:
Dead(UINTrow,UINTcol)失败处理
9、CMineWnd:
:
Victory()胜利判定并处理
10、CMineWnd:
:
OpenAround(UINTrow,UINTcol)展开拓展周围8个方向
11、CMineWnd:
:
DrawButton(CPaintDC&dc)绘制笑脸按钮图
12、CMineWnd:
:
DrawNumber(CPaintDC&dc)绘制数字
13、CMineWnd:
:
DrawShell(CPaintDC&dc)绘制外壳
14、CMineWnd:
:
DrawMineArea(CPaintDC&dc)绘制雷区
15、CMineWnd:
:
DrawSpecialMine(UINTrow,UINTcol)重新绘制雷区域的某个方块
3.3.4、代码实现
1、程序预处理
程序预处理部分包括加载头文件、定义全局变量和定义数据结构,并对它们进行初始化工作。
其中加载头文件的代码如下:
#include"stdafx.h"
#include"Mine.h"
#include"MineWnd.h"
#include"MineDefs.h"
#include"Mmsystem.h"
#include"DlgNewRecord.h"
#include"DlgHero.h"
#include"DlgCustom.h"
2、画图模块
该模块要紧用于画图操作,包括绘制笑脸按钮、外壳、绘制雷区、绘制数字、绘制按下扫雷按钮后的数字和重新绘制雷区域的某个小方块等。
该模块要紧包括以下几个函数:
voidCMineWnd:
:
DrawButton(CPaintDC&dc)绘制笑脸按钮
voidCMineWnd:
:
DrawNumber(CPaintDC&dc)绘制数字
voidCMineWnd:
:
DrawShell(CPaintDC&dc)绘制外壳
voidCMineWnd:
:
DrawMineArea(CPaintDC&dc)绘制雷区
voidCMineWnd:
:
DrawDownNum(MINEWND*mine,UINTnum)绘制按下扫雷后的数字
voidCMineWnd:
:
DrawSpecialMine(UINTrow,UINTcol)重新绘制雷区域的某个方块
3、初始化模块
包括初始化地图和位图的初始化
位图的初始化代码;
voidCMineWnd:
:
InitGame()
{
//位图的初始化
LoadBitmap();
m_nLeaveNum=m_uMineNum;
m_uSpendTime=0;
m_uBtnState=BUTTON_NORMAL;
m_uGameState=GS_WAIT;
if(m_uTimer)
{
KillTimer(ID_TIMER_EVENT);
m_uTimer=0;
}
m_pNewMine=NULL;
m_pOldMine=NULL;
初始化地图代码:
FreeMines();
//初始化地图
for(UINTi=0;i { for(UINTj=0;j { m_pMines[i][j].uRow=i; m_pMines[i][j].uCol=j; m_pMines[i][j].uState=STATE_NORMAL; m_pMines[i][j].uAttrib=ATTRIB_EMPTY; m_pMines[i][j].uOldState=STATE_NORMAL; } } 3.4开发环境以及部署环境要求 开发坏境: VC++6.0+Windowxp 运行环境: Windowsxp 4测试环境 4.1概述 测试是软件开发所不可少的重要部分,因为只有测试后才能明白软件能不能正常运行,是否达到了预期的成效,是否能实现所有的功能,在此我要紧测试有没有逻辑错误,要紧是对代码进行测试。 看是否和结构设计时期的要求一样,是否实现了需求时期所确定的各功能。 4.2测试环境 操作系统: Windows2000以上, 内存: 128M以上; 硬盘: 至少5G以上; 运算机必须装有VC++6.0 4.3测试打算 要紧分无个时期进行测设。 1、测试游戏主窗口是否与预期的一样。 2、在程序中所用到的算法是否得当。 3、用户是否能够自定义雷区。 4、当用户过关时是否能弹出对话框〝恭喜你过关〞等字样。 5、测试是否有扫雷英雄榜. 4.4测试项目 1、测试游戏主窗口是否达到了预期的成效。 通过运行得到的扫雷游戏界面为 ,由此可见,与在结构设计当中所预期的完全一样。 2、猎取某个小方块区域相邻8个区域的雷个数和猎取某个小方块区域相邻8个区域的已标志状态数是否正确。 可见,算法是正确的。 3、用户是要能够自定义雷区的。 点击游戏按钮,在下拉菜单中选择自定义, 打开对话框,输入所需要的高度和宽度还有雷数。 点击确定按钮后显示为 4、当玩家过关后会显示如下对话框, 5、用户必须要看到扫雷英雄榜,因为它记录着往常玩家玩的时候所得分数的信息。 5、工作总结 5.1工作成果 通过了两三周的努力,终于完成了该项目,结果令我专门中意,跟我起初所预想的差不多上一样,这确实是扫雷游戏的主窗口。 5.2过程分析 因为该项目是我一个人完成的,因此对专门多东西都比较熟悉,第一当拿到那个项目的时候就开始做预备,把所有在此次项目中遇到的东西都复习了一遍,我感受最难的确实是需求分析的确定,因为往常对扫雷那个游戏没如何接触过,也不明白算法是什么,也不知该如何确定要实现那些功能,当我看到Windows系统自带的扫雷游戏后终于明白了要实现那些要紧的功能。 1、第一时期: 要紧确定要该项目要实现哪些功能,确定那些功能能够实现,那些那么不可能实现。 2、第二时期: 结构设计,也确实是用什么模式、什么算法来实现,确定要做哪些,不做那些。 3、程序设计,也确实是编码设计,在现在期要紧是进行编码设计,通过用C++语言将所确定的所有功能用代码的形式表达出来。 4、测试,我认为那个工作时期是专门重要的,因此我采取边写代码边测试,最后完成编码设计后再来个总测设,如此就可不能出太大的问题,假如最后测试,如何显现错误将会专门难发觉错误出在哪个地点。 5.3体会教训及其分析 进过了两三周的时刻扫雷游戏终于完成了,在这次开发过程中遇到了专门多困难,因为是一个人一组,而且时刻不够,人员较少,能力的限制致使项目不是专门完美,通过这次课程设计我学到了专门多,获益颇多。 1、通过本次课程设计,把握了什么是UML,软件项目开发的差不多过程及其各时期的差不多任务,熟悉了UML程序总流程框图,了解了编译程序的生成过程、构造工具及其相关的技术对课本上的知识有了更深的明白得,课本上的知识是机械的,表面的。 通过把该算法的内容,算法的执行顺序在运算机上实现,把原先以为专门深奥的书本知识变的更为简单,对实验原理有更深的明白得。 2、通过该课程设计,全面系统的明白得了软件的一样原理和差不多实现方法。 把死板的课本知识变得生动有味,激发了学习的积极性。 把学过的UML系统建模的知识强化,能够把课堂上学的知识通过自己设计的程序表示出来,加深了对理论知识的明白得。 往常对与运算机软件的认识是模糊的,概念上的,现在通过自己动手做实验,从实践上认识了软件是如何处开发的,对系统建模的认识更加深刻。 课程设计中程序比较复杂,在调试时应该认真,在这次课程设计中,真正认识到了软件开发的精髓。 3、通过本次课程设计了解了如何把所学过的知识统一的结合起来,要紧是数据库的设计、UML系统建模、软件工程的充分利用。 为自己以后开发项目奠定了一定的基础和工作体会。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件 体系结构 课程 扫雷 游戏