当前位置:   article > 正文

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

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

一.前言

游戏介绍
这是一款经典的扫雷游戏,玩家可以任意点击一个小方框,若不是雷,则会显示周边有几个雷,并把雷的个数显示出来,若是雷,则被炸死,游戏结束。目前我们可以用已知的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};//存放排查出的雷的信息
    
    
    • 1
    • 2
    • 3

    在这里插入图片描述

    3.初始化及打印棋盘

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

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

    我们在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个雷
    中等16
    16棋盘,40个雷
    困难30*16棋盘,99个雷

    • 如果排查位置不是雷,周围也没有雷,可以展开周围的⼀⽚
    • 是否可以标记雷
    • 是否可以加上排雷的时间显示
    在线扫雷游戏:http://www.minesweeper.cn/

    声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/706177
    推荐阅读
    相关标签
      

    闽ICP备14008679号