扫雷小程序设计.docx

上传人:b****6 文档编号:5049188 上传时间:2022-12-12 格式:DOCX 页数:18 大小:637.11KB
下载 相关 举报
扫雷小程序设计.docx_第1页
第1页 / 共18页
扫雷小程序设计.docx_第2页
第2页 / 共18页
扫雷小程序设计.docx_第3页
第3页 / 共18页
扫雷小程序设计.docx_第4页
第4页 / 共18页
扫雷小程序设计.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

扫雷小程序设计.docx

《扫雷小程序设计.docx》由会员分享,可在线阅读,更多相关《扫雷小程序设计.docx(18页珍藏版)》请在冰豆网上搜索。

扫雷小程序设计.docx

扫雷小程序设计

 

扫雷小程序设计(总20页)

第1章问题描述与分析

1.1问题描述

扫地雷是一个广泛游戏,扫地雷的游戏规则:

扫雷就是要把所有非地雷的格子揭开即胜利;踩到地雷格子就算失败。

当鼠标点击到棋盘范围外时,视为无效,无响应。

游戏主区域由很多个方格组成。

基本要求为:

1.用程序设计分析思想对选题进行分析设计

2.用C语言对选题进行代码实现

测试要求为:

1.进行系统功能性测试,验证基本功能实现情况。

2.进行边界测试及特殊数据用例测试,验证功能模块的逻辑分支流程。

1.2问题分析

仔细分析课题的要求并粗略分析可以得到大致得到:

1.选择棋盘的大小(6*6,9*9,11*11)

2.选择游戏的难度(简单10%的雷,一般20%的雷,困难30%的雷)

3.绘制一个扫雷的面板。

4.根据鼠标点击位置确定所点格子位置。

5.判断格子是否是地雷,若为地雷则游戏结束。

若非地雷显示周围8个格子所含地雷总数。

6.若所有非地雷的格子揭开,则胜利,否则一直循环进行2、3步。

7.

第2章算法设计与流程图

2.

2.1算法设计

扫雷游戏的设计可以从三方面进行考虑:

1.面板的选择(BoardChoice)

2.难度的选择(LevelChoice)

3.游戏主界面(Game)

这三方面即为游戏进行的过程,大致可以画出如图2-1的模块图:

图2-1扫雷游戏设计的模块图

(1)面板的选择

在该模块中,需要决定面板的大小,即每行每列有多少个格子。

在设计时,个人决定使用6*6,9*9和11*11的格子面板。

设计中,个人决定设置3个按钮分别作为3种面板的选择。

在具体实现时,需要从两方面进行考虑,即:

位置确定和数据传入。

位置确定即为确定点击位置是否有效,确定点击位置与按钮的关系。

数据传入即为确定按钮后,将相应的6或9或11载入行列统计变量ROWANDCOLUMN中。

(2)难度的选择

在该模块中,需要决定面板种雷的个数,面板中应包含多少的地雷。

在设计时,个人决定使用10%,20%和30%的总格子数作为雷的总个数。

设计中,个人决定设置3个按钮分别作为3种面板的选择。

在具体实现时,需要从两方面进行考虑,即:

位置确定和数据传入。

位置确定即为确定点击位置是否有效,确定点击位置与按钮的关系。

数据传入即为确定按钮后,将相应的雷数载入变量MINENUM中。

(3)游戏主界面

游戏主界面的设计可以包含图形的绘制模块,鼠标区域的获取模块,数据的生成模块。

各部分包含的内容如下:

a)图形的绘制

1基础线条的绘制

2单个地雷的绘制

3非雷区域的数字输出

4游戏结束后所有雷和数字的结果输出

b)鼠标区域的获取

1有效性判断

2获取鼠标区域将坐标转换为可以使用的相应的数组数据

c)数据的生成

1初始化数据

2随机位置设置雷

3非雷区域计算相应数值

2.2流程图

2.2.1总体流程图

函数的主流程图如图2-2。

在该流程图中,介绍了游戏的三个界面的切换情况,三者为依次展示的状态,完成前一步骤后方可进入下一界面。

图2-2程序的总流程图

2.2.2面板的选择的流程图

面板的选择流程图如图2-3。

在该流程图中,介绍了面板大小选择的流程,主要的部分为界面的绘制过程,鼠标点击区域的判断,以及相应数值的赋值。

该过程是扫雷游戏的第一个界面。

该流程的目的是为了传入相应的参数,使得在游戏主界面时,能够初始化相应数组以及绘制对应的界面。

图2-3面板选择的流程图

2.2.3难度的选择的流程图

难度的选择流程图如图2-4。

在该流程图中,介绍了游戏难度的选择流程,主要的部分为界面的绘制过程,鼠标点击区域的判断,以及相应数值的赋值。

该过程是扫雷游戏的第二个界面。

过程类似于面板选择的流程。

该流程的目的是为了传入相应的参数,使得在游戏主界面时,能够初始化相应数组以及绘制对应的界面。

图2-4难度选择的流程图

2.2.4游戏主界面的流程图

游戏主界面的流程图如图2-5。

在该流程图中,主要的操作为绘制相应的主界面面板,即多个格子。

获取鼠标点击的位置,而后进行储存数据的判断,雷区与非雷区的判断,游戏是否结束的判断等等操作,相应的过程如下所示。

图2-5游戏主界面的流程图

第3章编码与测试

3.

3.1程序编码

程序的编码部分可以分为四各模块,即:

主函数的程序部分,面板大小选择部分,难度选择部分,游戏主界面部分,每个部分内均可以分类编写,互不干扰,以下为代码的主要部分,详细代码由于篇幅的限制,可以在附录中查阅。

3.1.1主函数程序代码

#include<>

#include""

#include""

#include""

1.intROWANDCOLUMN;

2018.

2.EGE文档与源代码.ege-open-source,2018.

3.EGE(EasyGraphicsEngine).manual,2018.

4.EasyGraphicsEngine基础教程.category/lesson,2018.

5.谭浩强.C++程序设计(第3版).北京:

清华大学出版社,2015.

6.严蔚敏,李冬梅,吴伟民.数据结构(C语言版第2版).北京:

人民邮电出版社,2015.

7.王红梅,胡明,王涛.数据结构(C++版).北京:

清华大学出版社,2011.

8.严蔚敏,陈文博.数据结构及应用算法教程(修订版),北京:

清华大学出版社,2011.

9.严蔚敏,陈文博.数据结构及应用算法教程(修订版),北京:

清华大学出版社,2011.

10.Decoder.C/C++程序设计.北京:

中国铁道出版社,2002.

11.谭浩强.C++面向对象程序设计(第2版).北京:

清华大学出版社,2014.

12.

附录

1.必选题题目

使用折半插入排序的方法对10个数进行排序,按照要求画流程图,给出代码及结果截图。

2.流程图

图附-1排序算法流程图

3.程序代码

#include

usingnamespacestd;

voidBInsertSort(int*arr,intlength)

{

for(inti=1;i

{

inttemp=arr[i];//需要插入的值存放入temp

intlow=0;

inthigh=i-1;

while(low<=high)

{

intmid=(low+high)/2;

if(temp

high=mid-1;

else

low=mid+1;

}

for(intj=i-1;j>=high+1;j--)//记录后移

arr[j+1]=arr[j];

arr[high+1]=temp;//插入正确位置

}

}

intmain()

{

//输入数据

cout<<"请输入需要排序的十个数字"<

int*arr=newint[10];//十个数字

for(inti=0;i<10;i++)

cin>>arr[i];

cout<

//折半排序

BInsertSort(arr,10);

//输出结果

cout<<"排序结果"<

for(inti=0;i<10;i++)

cout<

cout<

return0;

}

4.测试结果

实验测试输入了多组数据,在测试结果该模块中展示的为三个具有代表性的程序结果截图。

图6-2为顺序输入10个数据后的测试结果,在控制台中输入了1-10十个数字的顺序序列,即12345678910,在折半插入排序之后,正常显示从小到大的10个数字序列,排序结果与预期相符,结果正确。

图附-2顺序输入10个数字的测试结果

图6-3为逆序输入10个数据后的测试结果,在控制台中输入了1-10十个数字的逆序序列,即10987654321,在折半插入排序之后,正常显示从小到大的10个数字序列,排序结果与预期相符,结果正确。

图附-3顺序输入10个数字的测试结果

图6-4为乱序输入10个数据后的测试结果,在控制台中输入了87-1992314314010十个数字,在折半插入排序之后,正常显示从小到大的10个数字序列,排序结果与预期相符,结果正确。

图附-4乱序输入10个数字的测试结果

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 军事

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

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