步骤
1.是否开始扫雷
(1)打印游戏开始界面。
(2)由用户输入数据选择是否开始游戏。选择“开始”进入游戏,选择“退出”退出程序,选择 错误重新进行选择。
&1. 利用自定义函数menu()打印游戏开始界面
&2. 定义整形变量input,在do while循环中输入input的值,利用switch判断语句判断是否开始 游戏。
输入“1”时开始游戏;输入“0”时退出循环,程序结束;输入其他数据时执行default,重新 选择是否进行游戏。
&3. do while循环语句,循环判断部分使用用户输入input的值,“0”时退出循环,非零继续执行。
2.创建棋盘
(1) 设置两个二维字符型数组,利用函数对棋盘进行初始化。
(2) 打印棋盘。
//初始化:
&1. 在头文件中定义两组行(row)、列(col) , 一组9*9 ,一组11*11 。
&2. 在源文件中定义两组二维字符型数组,用以存放棋盘的数据。
&3. 利用自定义函数进行初始化棋盘。
在Stdboard函数中利用for循环为棋盘的各个坐标赋值,mine中存放字符‘0’,show中存 放字符‘*’。
//打印:
&1. 利用自定义函数进行棋盘打印。
&2. 设置for循环,在9*9棋盘外围为棋盘附加上坐标,帮助用户更好定位。
&3. 利用for循环,对二维字符数组show中的数据进行9*9打印,完成棋盘打印。
mine棋盘显示所有炸弹位置,show棋盘为用户使用棋盘。
3. 部署雷
(1)利用自定义函数在棋盘中对雷进行随机部署。
//部署:
&1. 利用自定义函数在棋盘内部署雷。
&2. 在头文件中定义雷(MINE)的个数为10。
&3. 定义三个整形变量x,y,count。
为count赋值MINE用于计量炸弹个数。
设置while循环。
为x,y赋值。利用rand()%row(col)求余,因为row=9,col=9,所以结果为0~8。
+1后结果范围变为1~9。(利用时间戳配合rand使用)
&4. 利用if条件判断语句,当棋盘中任意位置不等于字符'1'时,为这个位置赋值字符'1'。
当count等于0时,退出循环,雷部署完毕。
4.排查雷
(1)利用自定义函数排查雷。
//排查:
&1. 利用自定义函数进行排查。
&2. 定义三个整形变量x,y,win。
设置while循环,循环判断条件为win < row * col -MINE,未找出除炸弹以外的所有空。
利用scanf函数输入你所需要排查的坐标。
当输入数值不符合在棋盘范围内,执行else语句,重新进行输入。
若输入的坐标结果为'1'(炸弹),则游戏失败,打印所有炸弹安放图,退出循环。
若输入的坐标结果不是'1',则定义一个整形变量count并为其赋值。
在Getminenum函数中导入mine(炸弹分布)函数,计算并返回周围8格的炸弹个数。
在show(游玩棋盘)中,对你选择的坐标赋新值(炸弹存在个数),并且打印显现。
直到所有炸弹被找出(win == row * col - MINE),完成扫雷游戏。
结尾
(1)自定义函数要在头文件声明。
(2)各个源文件要添加头文件。