<C语言>关于使用控制台实现扫雷游戏的前期分析与设计

步骤一:初步明确游戏的功能

先粗略罗列本次扫雷游戏的相关功能(参考类似扫雷游戏的基本玩法)。

控制台扫雷游戏基本功能说明
1使用控制台实现简单扫雷游戏
2能够通过菜单实现继续玩或退出游戏
3规定扫雷棋盘的范围9x9方格
4实现随机布置设定数量的地雷
5排查位置是雷,炸死,游戏结束
6排查位置不是雷,显示该位置周围一圈方格的地雷数量
7找到所有非雷时,排雷成功,游戏结束
8(5-7项均为排查雷,O表示地雷,P表示非地雷

步骤二:数据结构的分析

众所周知,扫雷游戏的核心就是布置地雷和排查地雷的位置,所以布置的雷和排查的雷的信息都需要移动数据结构进行储存。

已知布雷和排雷的操作均在9x9的棋盘上,所以可以创建一个9x9的二维数组进行存放。

空棋盘
012345678
0
1
2
3
4
5
6
7
8

根据自己规划设置:如果布置雷,存放O;没有布置雷,存放P

布置雷的棋盘
012345678
0PPPPPPPPP
1PPPPPPPPP
2PPOPPOPPP
3PPPPPPOPP
4PPPPPPPPP
5PPPPPPOPP
6OPOPOPPPP
7POPPOPOPP
8PPPPPPPPP

假设排查(2,5)坐标的位置,访问周围一圈8个位置,统计周围地雷数量是1

假设排查(8,6)坐标的位置,访问周围一圈8个位置,统计周围个数时,最下面3个坐标会出现越界情况。

排雷的假设
012345678
0PPPPPPPPP
1PPPPPPPPP
2PPOPPOPPP
3PPPPPPOPP
4PPPPPPPPP
5PPPPPPOPP
6OPOPOPPPP
7POPPOPOPP
8PPPPPPPPP

为防止越界,出现超出数组元素最大数值,在保证布雷范围9x9的基础上扩大数组,扩大范围不布雷,解决越界问题,所以此处数组可以扩大为11x11

扩大的棋盘
 0 1 2 3 4 5 6 7 8 91011
 1
 2PPPPPPPPP
 3PPPPPPPPP
 4PPOPPOPPP
 5PPPPPPOPP
 6PPPPPPPPP
 7PPPPPPOPP
 8OPOPOPPPP
 9POPPOPOPP
10PPPPPPPPP
11

继续分析,已知在棋盘上布置好了雷O和非雷P,存在以下情况:

排查的位置不是雷O时,但周围有雷,需要把排查出的雷的数量存储并打印,作为排雷的依据。此时,排查出的雷不能放入布置雷的数组,不然数据会混淆,打印混乱。

针对这个问题,采取的方案是把布置的雷的信息和排查的雷的信息分开存放,分别放入两个不同数组棋盘中,把雷布置到mine,排查出的雷放到show。此时就不存在干扰,也可以单独打印show数组来参考。

为了保持隐秘性,show数组开始初始化为字符'#',mine数组初始化为字符'P',布置雷改成'O'

为保证两个数组类型一致,建议使用同一函数处理。

mine数组布置雷后的状态
 0 1 2 3 4 5 6 7 8 91011
 1
 2'P''P''P''P''P''P''P''P''P'
 3'P''P''P''P''P''P''P''P''P'
 4'P''P''O''P''P''O''P''P''P'
 5'P''P''P''P''P''P''O''P''P'
 6'P''P''P''P''P''P''P''P''P'
 7'P''P''P''P''P''P''O''P''P'
 8'O''P''O''P''O''P''P''P''P'
 9'P''O''P''P''O''P''O''P''P'
10'P''P''P''P''P''P''P''P''P'
11

 0 1 2 3 4 5 6 7 8 91011
 1
 2'#''#''#''#''#''#''#''#''#'
 3'#''#''#''#''#''#''#''#''#'
 4'#''#''#''#''#''#''#''#''#'
 5'#''#''#''#''#''#''#''#''#'
 6'#''#''#''#''#''#''#''#''#'
 7'#''#''#''#''#''#''#''#''#'
 8'#''#''#''#''#''#''#''#''#'
 9'#''#''#''#''#''#''#''#''#'
10'#''#''#''#''#''#''#''#''#'
11

步骤三:文件结构分析

本次游戏设计3个文件:

test.c         //文件中写游戏的测试逻辑

game.c      //文件中写游戏中函数的实现

game.h      //文件中定义需要的数据类型和函数声明

文多件书写的好处:

(1)逻辑清晰

(2)方便多人协同

(3)适当隐藏代码(保护源代码)

步骤四:搭建整体思路框架

此处思路大致分为三部分

1、菜单框架分析,即在主函数内需要实现游戏的顺序

(1)游戏开始-->菜单menu(此处需要1个函数实现,打印文字或字符来实现该功能)

(2)出现菜单-->提示选择的选项-->输入对应数字来与选项互动(需要有scanf函数来实现)

(3)根据输入数字的不同,实现不同的游戏操作(此处可以使用switch函数实现)

选项1时,开始游戏,此时需要一个实现游戏的函数;

选项0时,退出游戏。

2、游戏框架分析,即实现各游戏功能的函数组成

(1)需要2个数组:一个放置布置的雷mine,一个放置查找出的雷show

(2)初始化棋盘:mine最开始全部为'0',即符号0,show最开始全部为'*',即符号*。为实现需要2个函数

(3)打印棋盘:需要一个打印show棋盘的函数,显示全部为'*',即打印的结果是我想给你看到的内容

(4)布置雷:此处需要一个布置雷的函数

(5)排查雷:此处需要一个排查雷的函数

3、游戏函数代码实现

至此,关于控制台扫雷游戏的整体分析与框架结构已全部梳理清晰,具体游戏代码实现详见下篇“<C语言>关于使用控制台实现扫雷游戏的代码实现”

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值