C语言实现简单版扫雷游戏

扫雷游戏大家都应该玩过,毕竟扫雷是每台电脑自带的一款游戏,那么大家有没有想过这款游戏的代码原理是什么呢,下面就让我为大家带来C语言实现一个简单的扫雷游戏。
首先,我们先要懂得游戏的机制,如果扫中的是一个地雷,那我们就会提示玩家被炸死了,但如果扫到的不是地雷,那我们就在这个雷的位置显示该位置周围的八个位置中的地雷数,那我们开始吧。

首先给个主函数框架,要给出玩家一个菜单供玩家选择是玩游戏还是退出游戏,根据玩家输入的选择用switch函数来进行操作,因为我们要让玩家不限次的玩游戏,输入1就开始游戏即进入Game函数,输入0就退出游戏,仅当玩家想要退出游戏我们才结束程序,所以我们要使用do-while循环来实现。
在这里插入图片描述
在这里插入图片描述
框架搭好了,我们先给出两个二维数组用来布雷和显示排出的雷的信息,因为我们要实现的是在9乘以9的棋盘中布雷,但在排雷的过程中,假如最左上角的位置不是地雷,那我们就要打印周围雷的信息,所以再给出一个9+2乘以9+2的棋盘来显示。为了方便,我们就用宏定义#define来定义我们棋盘的行和列

在这里插入图片描述
好了,接下来就开始Game函数的设计,首先先要将两个棋盘都初始化,我们用字符0表示无地雷,字符1表示地雷,字符*显示我们的未知棋盘,重置(初始化)函数InitBoard的设计不用多讲,遍历数组然后赋初值就行了,传参要把两个数组都初始化,就要都传过去,有人就要问了,为啥会多出个字符参数set,因为set是用来存我们要赋的初值‘ 0’ 和‘ * ’的,所以初始化函数就完成了。
在这里插入图片描述
初始化完了之后我们肯定要显示我们的棋盘,所以就要开始设计我们的显示函数Display函数了,我们首先用一个11乘以11的棋盘来接受要显示的棋盘,再给个行和列,为了方便玩家立刻能知道自己想要排雷的位置在几行几列,我们就把行号和列号打印出来,每打印一行进行换行,下边就是我们要打印的效果,至于传参,我们当然是打印9乘以9的那部分棋盘,则行和列就分别为宏定义的ROW和 COL.
在这里插入图片描述在这里插入图片描述
为玩家展示了未知棋盘后,我们就要开始布雷,至于布多少个雷,我们可以宏定义雷的总数BOOM为10,然后把这十个地雷随机的放在9乘以9的棋盘内,这里就要用到我们的随机数了,
要使随机数的范围在[1,9]的范围内,我们就要模上一个行数然后再加一就能得到我们所想要的随机数了,然后这里我们要使用while循环,每布置一个地雷,地雷的数量就减一,直到为0就跳出循环。

在这里插入图片描述
地雷放置好了,接下来就是排雷,这里我们要同时使用两个棋盘来显示信息,我们首先要判断玩家输入的坐标是否在1-9的范围内,如果不是,则让玩家重新输入,所以我们要用while循环来实现重复输入,如果玩家输入的坐标合理,则判断所输入坐标位置是否为地雷,如果是地雷,则提示“您被炸死了”,如果不是地雷,则要统计周围雷的个数情况,所以我们这里用一个GetBoom函数来统计雷的个数,因为我们的棋盘里边放置的是字符,要么是‘0’要么是‘1’,而字符数字减去字符‘0’才是它本身的数字,当然数字加上字符也就是其字符数字(以ASCII码值进行计算)
在这里插入图片描述

在这里插入图片描述
写到这里,我们的游戏基本上就可以玩了,先来试一把!

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
下来是所有的代码
game.h
在这里插入图片描述
test.c
在这里插入图片描述
game.c
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

发布了6 篇原创文章 · 获赞 0 · 访问量 179

猜你喜欢

转载自blog.csdn.net/qq_43761048/article/details/102637801