我在这里发表一下思路:
1.首先这个和三子棋的封装概念是一样的,都需要利用到封装(在我上一篇文章三子棋中),看上去就更加美观一些。
其次,就是需要两个二维数组,这个和三子棋不一样,三子棋中只需要一个二维数组。
和图片一样,那我们来理解一下为什么需要两个二维数组。扫雷大家应该都玩过,我们需要把整个棋盘拆开来理解(画的不好别在意,我们假设只有‘1’是地雷,0都是安全区域)
我们肯定不能让游戏玩家直接看到这个界面(开挂另论),我们一开始看到的界面是不是都是如图二一样,都是一些特别的字符,或者是其他的图形
所以我们就需要利用两个二维数组才可以遍历这两种情况,第一个数组是把所有的雷的信息换句话说就是作为设计游戏人员才能看到的面板,第二个就把自己幻想成为一个游戏用户来思考能看见什么界面,或者说游戏流程。这是与三子棋不同的地方,而且扫雷麻烦的就是这两个数组之间的联系。
2.大体逻辑:
我们第一个数组存放完所有的雷之后,我们需要让这个棋盘的信息与原来初始化为全‘*’的棋盘的信息进行互通,利用scanf输入的值保存在第一个数组中,但是展现的是第二个数组,当第一个数组里的内容为0自然是没踩到雷,我们需要把它周围八个坐标的值加在一起,这里就是利用0,1来区分是雷或者非雷的好处因为可以直接利用数学计算来得到你将展现给用户的数字
之后各位还可以将这两个数组分别打印出来方便进行观察。
这是我所认为的两个难点,还有一个是利用递归来展开这个棋盘中,0周围其余的地方也还是0的地方(我还在学习,目前没想出来)。
代码的连接放在:
game2_5_14/game2_5_14 · 李行者/study C - 码云 - 开源中国 (gitee.com)
game.c 声明游戏函数
game.h 定义游戏函数
test.c 游戏实现的大体逻辑