扫雷游戏思路总结

本文详细描述了扫雷游戏中主函数的组织结构,test和menu函数的作用,以及game函数中关键部分,如棋盘初始化、随机布雷、用户输入判断和雷数显示。通过嵌套循环和if语句实现游戏流程。
摘要由CSDN通过智能技术生成

一.大方向

主函数--test():目的是使主函数整洁干净,把游戏的设置全写在子函数里。

test函数--menu():菜单函数,给出0/1的选择--选0--break;选1--进入game函数。

game函数--根据产生棋盘的过程分为--1.分成开发者设置的棋盘和用户使用的棋盘;

                                                             2.初始化两个棋盘;

                                                             3.布置雷;

                                                             4.让用户输入坐标并判断是否有雷最后判断输赢;

                                                             5.计数周围8个坐标的个数;

     

                                         

二.     game函数内部对棋盘的操作

1.初始化

1-1.棋盘的规模:

当我们玩扫雷游戏时总认为是9*9的方格,其实不然。用户输入一个坐标,游戏要统计周围8个坐标的雷个数,如果只有9*9,那第一行和第一列周围是少于8个坐标的。所以初始化棋盘时,应该设置成11*11,显示棋盘或者给用户操作时,再显示9*9。

1.2 如何表示有雷与否?

在开发者设置的棋盘(用mine表示):用0表示无,1表示有,简单直观。

在用户游戏的棋盘(用show表示):用*表示未曾输入的坐标,输入坐标后,用周围8个坐标的雷数代替输入坐标。

注意:这里初始化是一个函数但是有两个数组需要调用它,于是我们定义char sign来接受初始化的字符。

另外:我们可以用打印的方式来写显示函数(void xianshi()),用于随时检查自己写的函数代码是否达到自己想要的样子。但是要注意显示函数和其他函数调用的顺序问题。

2.布置棋盘

也就是安排雷到随机的坐标,此时需要调用srand函数来生成随机数,再通过随机数产生1~9的坐标。

安排几个雷呢?我们可以给游戏设置一个难度,如简单模式就布置10个雷(宏定义一个EAST_COUNT 10),每布置一个雷,总雷个数减少1。count--一定要放在if内部!!放在外面布置雷的个数就不对。

3.让用户输入坐标并判断是否有雷最后判断输赢

3.1 while的条件:

首先用户要输入坐标,输入几次呢?10个雷,最少1次(即输入第一次就被炸死),最多9*9-10次,也就是避开了所有的雷成功了。所以定义一个rest来计数输入坐标的次数,rest<71,加上while循环,一旦输入的坐标有雷就跳出循环,当rest==71时输出成功的信息。

3.2 while的内部构成:

输入坐标+打印用户show棋盘

判断坐标--¥1 是否有效:1~9

                 ¥2 此坐标是否被输入过:show[x][y]=='*'

                 ¥3 此坐标是否是有雷的:mine[x][y]==‘0’ 安全,安全了以后rest++,打印show棋盘提示用户继续输入坐标,而show棋盘需要展示周围雷的个数,所以在这里调用查看雷函数并将周围雷个数等于输入的坐标上,然后在用显示函数显示show棋盘。

以上,¥3嵌套再¥2内,¥2嵌套再¥1内,用if嵌套。

至此,扫雷函数完成,测试时可以将EASY_COUNT设置成80,这样输入一次就可以完成游戏并输入结果来测试。

  • 21
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值