扫雷游戏(C语言)(超详细!新手小白入!)

OKkankan 2024-06-11 12:05:07 阅读 93

扫雷游戏详细过程

一.前言二.游戏的分析和设计1.厘清整体思路2.棋盘的构建与思路3.初始化及打印棋盘4.布置雷5.排查雷三.扫雷游戏的扩展

一.前言

游戏介绍

这是一款经典的扫雷游戏,玩家可以任意点击一个小方框,若不是雷,则会显示周边有几个雷,并把雷的个数显示出来,若是雷,则被炸死,游戏结束。目前我们可以用已知的C语言知识来编写这样一个小游戏。

这是一款经典的在这里插入图片描述

二.游戏的分析和设计

1.厘清整体思路

(1)首先我们要明确使用到的C语言知识,不难想象我们可以用二维数组建立棋盘,再在此基础上实现雷的布置,雷的排查等,用到的C语言知识会有函数的调用以及声明、随机数的生成、各类循环的用法等等

(2)为了方便我们写程序,我们可以使用多文件的方法,在test.c文件中实现代码的测试,在game.h和game.c文件中进行扫雷功能的实现,如下:

在这里插入图片描述

2.棋盘的构建与思路

(1)在构建棋盘之前,我们要进行一个游戏的开始,也就是制作一个菜单(制作菜单很容易想到switch语句),如下:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

(2)使用二维数组建立棋盘,我们要构建一个9乘9的棋盘,进行雷的布置和雷的排查,如果一个位置是雷我们就放上1,不是雷就存放0:

在这里插入图片描述

(3)A如上图所示,这样我们就想到一个问题,如果我们要计算一个非雷处周围有几个雷,我们就需要计算它的一周相加是几,如果在中间我们可以计算它一周的值,但如果是边缘呢,这样我们就想到将棋盘扩大一圈,但是外围的一圈我们不放雷,也就不影响最终结果,还可以方便计算,但是我们打印出来的可以只是9乘9的棋盘;B我们不妨再想一些问题,我们将一个棋盘布置好雷之后,我们要怎样知道被排查后的雷的信息呢?如果放在一个棋盘中那么整个信息就会有点混乱,而且不方便打印,如此一来,我们可以想到,使用两个棋盘来打印,一个用来存放雷,一个用来存放排查出的雷的信息 ;C ROW代表行,COL代表列,ROW和COL就代表布置雷的范围,ROWS和COLS代表扩大范围的棋盘,这样我们的棋盘最初始的形式就形成了。为了后期方便使用,我们可以在game.h头文件中定义这些变量,并且可以声明后面使用的函数:

下面展示一些 内联代码片

char mine[ROWS][COLS]={ 0};//存放雷的信息char show[ROWS][COLS]={ 0};//存放排查出的雷的信息

在这里插入图片描述

3.初始化及打印棋盘

如图所示:

在这里插入图片描述

第一个是mine数组,布置雷;第二个是show数组,存放被排查出的雷的信息,同时为了保持神秘,show数组最开始用字符‘*’初始化,为了可以使用同一套函数,将mine数组初始化为‘0’和‘1’ 下面展示一些 内联代码片

IintBoard(mine, ROWS, COLS,'0');//初始化棋盘IintBoard(show, ROWS, COLS,'*');DisplayBoard(show,ROW,COL);//打印棋盘,因为我们只需要展示9*9的棋盘,打印ROW COL即可DisplayBoard(mine,ROW,COL);

我们在game.c的文件中实现函数,在test.c文件中调用,在game.h的文件中进行声明,下面给出我们头文件中的声明,我们要注意的是,在上面的代码片中我们在初始化棋盘时候传入的参数是ROWS和COLS,但是打印棋盘的时候传入的是ROW和COL,这一点我们要明确清楚。另外为了方便我们的行和列,我们在打印棋盘时候也可以将行和列直接打印出来,下面是我们利用循环的知识打印出具体的初始化和棋盘的代码:

在这里插入图片描述

在这里插入图片描述

初始化打印如下:

在这里插入图片描述

4.布置雷

首先我们要明确一点,我们是在mine棋盘中布置雷,在show棋盘中将雷的信息展示出来,下面我们就要思考如何去布置10个雷进去,同时要注意的是我们布置雷要在9乘9的棋盘中布置,所以我们传入的参数应该是ROW和COL,不难想象我们可以利用随机数的方法,我们要注意的是随机数的用法和它所需要的头文件(要生成1到100的随机数:rand()%100+1,%100的余数是0到99,在加1就是0到100):

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

5.排查雷

在雷都布置好的基础之上,我们就要开始排查雷,我们要如何排查雷,我们不妨认真思考一下,我们很容易想到用坐标的方式表示我们要排查的雷,那么我们要如何计算我们排查的位置周围有几个雷呢,给大家展示一张图说明清楚以及代码展示:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

三.扫雷游戏的扩展

我们在已有的C语言基础上可以在尝试更高难度的扫雷游戏,大家可以自己尝试挑战自己!

• 是否可以选择游戏难度

简单99棋盘,10个雷

中等1616棋盘,40个雷

困难30*16棋盘,99个雷

• 如果排查位置不是雷,周围也没有雷,可以展开周围的⼀⽚

• 是否可以标记雷

• 是否可以加上排雷的时间显示

在线扫雷游戏:http://www.minesweeper.cn/



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。