资源预览内容
第1页 / 共7页
第2页 / 共7页
第3页 / 共7页
第4页 / 共7页
第5页 / 共7页
第6页 / 共7页
第7页 / 共7页
亲,该文档总共7页全部预览完了,如果喜欢就下载吧!
资源描述
C 语言扫雷小程序概要设计语言扫雷小程序概要设计2011-12-06xu_kebupt.edu.cn目录目录扫雷小程序概要设计 .1 1.数据结构设计.2 1.1 地雷分布矩阵 Bomb.2 1.2 周边地雷计数矩阵 Count.2 1.3 显示矩阵 Display.3 2.主要函数设计.3 2.1 void displayGrids() .3 2.2 void initBomb() .3 2.3 void initCount().4 2.4 void initDisplay().4 2.5 void init().4 2.6 void digGrid(int x, int y).5 2.7 void signGrid(int x, int y).5 2.8 int checkGameState().5 2.9 void main().51.数据结构设计数据结构设计使用三个二维数组(可以改成动态分配大小的数组,这里固定大小) int Bomb1010 = 0;/地雷分布矩阵 int Count1010 = 0;/周边地雷计数矩阵 char Display1010 = 0;/显示字符的矩阵1.1 地雷分布矩阵地雷分布矩阵 BombBomb1010表示格子的哪个位置上有雷,如下图矩阵,Bomb33 = 1 和 Bomb44=1 则说明这两个位置有雷。可以使用随机数函数生成随机数 x 和 y,然后在 Bombxy的位置 上布雷。00000000000000000000000000000000010000000000100000000000000000000000000000000000000000000000000000001.2 周边地雷计数矩阵周边地雷计数矩阵 CountCount1010表示每个格子周围的地雷总数,根据 Bomb 数组可以计算出 Count 数组的取值。 下面是(1)中 Bomb 矩阵对应的 Count 矩阵00000000000000000000001110000000112100000012110000000111000000000000000000000000000000000000000000001.3 显示矩阵显示矩阵 DisplayDisplay1010表示格子的每个位置上应该显示什么符号,这是一个字符二维数组,根据每 次挖开的位置,以及 Count 数组和 Bomb 数组计算得出。 例如,可以定义几个字符作为该数组的取值: # 表示格子未翻开时的显示 18 表示翻开格子后没有雷,字符显示的周边雷数 * 表示翻开格子后有雷的显示 (空格)表示翻开格子后周边没有雷时的显示 !表示该位置被标识的显示2.主要函数设计主要函数设计2.1 void displayGrids()功能:在屏幕上显示当前的格子矩阵 设计: void displayGrids() 二层循环,遍历 Display 数组 printf(Displayij); 如果一行结束 printf(“rn”); 2.2 void initBomb()功能:初始化 Bomb 矩阵,随机布雷 设计 void initBomb() while(i雷的总数) 随机生成 x, y 如果 x,y 的位置已经有雷 continue; Bombxy = 1; i+; 2.3 void initCount()功能:根据 Bomb 矩阵,初始化 Count 矩阵 设计:void initCount() 二层循环,遍历 Bomb 如果 Bomb 的(i, j)位置有雷 for( (m, n) 是 (i, j) 周围的 8 个格子) Countmn +; 2.4 void initDisplay()功能:初始化显示矩阵 设计: 数组初始化成 #2.5 void init()功能:发起各矩阵的初始化,在开始时调用 设计: void init() initBomb(); initCount(); initDisplay(); 2.6 void digGrid(int x, int y)功能:挖开一个指定坐标的格子 参数: x 矩阵的行坐标 y 矩阵的列坐标 void digGrid(int x, int y) 如果 Bombxy位置有雷 Displayxy = *否则如果 Countxy是 0 递归的翻开(x,y)周围的格子 否则 根据 Countxy的取值给 Displayxy赋值 2.7 void signGrid(int x, int y)功能:标识一个指定坐标的格子 参数: x 矩阵的行坐标 y 矩阵的列坐标2.8 int checkGameState()功能:检查所有的格子,看游戏是否结束 返回值: 1 表示成功结束 2 表示失败结束 0 表示游戏继续 自己设计2.9 void main()功能:主函数 设计: void main() 初始化各矩阵 init() 显示格子矩阵 displayGrids()循环等待用户输入 提示用户输入操作字符; switch(输入的操作字符) case 挖雷操作: 提示,输入坐标 x, y;digGrid(x, y);break;case 标识操作 case 退出操作 显示矩阵 displayGrids() 获得状态 checkGameState()如果成功结束 则打印提示信息,退出 如果失败结束 则打印提示信息,退出 如果未结束 则继续循环
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号