扫雷游戏(仅用数组和函数实现)

1.引言

我们学了那么长时间的C语言了,也是时候该检验自己的学习进度和学习结果了。同时,也希望通过这个例子,能提高各位读者的编程能力。那么就让我们开始美妙的编程之路吧!

2.扫雷游戏的规则

扫雷游戏规则:

扫雷游戏每一台windows系统的电脑都有,是一个很简单很经典的益智类游戏,但我们不能小看它,小游戏蕴含大智慧!最基本的规则:你点到一个数字,如果是3,那就说明最靠近它周围的8个格里有3个雷。. 然后通过相邻或者相间的数字之间的交集来判断哪些是雷。如图,绿色的数字2,它周围的 上、下、左、右、四个斜角 ,一个是8个格,其中有2个格子是雷。
扫雷游戏
当你把所有雷都成功排除了,就获得了游戏的胜利。
在未正式讲解扫雷游戏之前,希望各位读者能够点开下面的链接,玩一玩,感受扫雷的魅力。🤗

在线扫雷游戏:网页版扫雷

3.编程实现

3.1 编程思路

  1. 相信玩过扫雷的读者都知道一个道理:我们用鼠标点击格子,点击后,就能得到一些信息。到我们实现时,我们就用输入坐标的形式来替代这一特点。
  2. 扫雷游戏是在一个类似于棋盘的样式上面实现的,那我们该如何弄出这个棋盘呢?那想必学过数组知识的读者,一样就能看出用的就是二维数组。没错,棋盘的创建我们就用二维数组来实现。
  3. 我们是能够用二维数组来创建棋盘,但是在我们玩游戏的过程中,我们会把用户的实时操作信息通过棋盘的形式展现在我们的眼前,这个编程思路是什么呢?我们可以创建两个二维数组,就是两个棋盘,其中一个棋盘仅玩家可见(为了方便后面的描述,这里我们就这个把这个棋盘简称为show棋盘)。还有一个棋盘就是编程人员可见(这个棋盘简称为mine棋盘),编程人员可见的棋盘,可以理解为玩家开挂之后的样子,棋盘上面雷的信息清晰可见。
  4. 我们可以根据玩家输入的坐标信息,在mine数组的视角里,先判断这个位置是否有雷,如果有雷,那么游戏结束。如果没雷,就在这个格子上显示周围的雷的个数有多少个。
  5. 那如何实现格子上显示周围的雷的个数?为了解决这个问题,有的读者就会想到,在mine棋盘上,用整数1来表示雷,用整数0来表示没有雷的格子,在show棋盘上,有字符 ‘* ’掩盖住信息(相当于mine棋盘对玩家不可见),供玩家排雷使用。通过二维数组的知识,得到这个格子周围的整数,之后一相加就可以得到我们想要的数据了。想法很不错,不过仔细一想,这种方式的代码量将会很大。那为什么代码量很大呢?原因是,你的mine棋盘是个二维的整型数组,而show棋盘是个二维的字符数组,并且在上面我描述过,我们是要从mine棋盘获得信息,通过show棋盘展示给玩家看的,既然这两个数组有着如此亲密的关系,那我们就不难想到这两个数组用同一个数据类型。
  6. 那该用字符型的,还是整型的?最好使用字符型的,因为受到show数组给玩家呈现效果的影响,我们才选择字符型的。(这个点很重要,希望读者们能够好好地理解一下!)
  7. 解决棋盘的问题,那么现在,就该解决如何在棋盘中布置雷的信息,这个问题很好解决,我们可以先让mine数组中全部置为字符 ‘0’ ,通过rand()函数在mine数组中随机位置赋值为 ‘1’。
  8. 最后为了更加形象化的说明以上的思路,以及在补充一些细节的点,请读者看下面的图片:
    思路描述

3.2 代码实现

本次代码采用多文件编写的形式,这样编写出的代码更具逻辑性,希望读者们也能够有这种方法实现这个小游戏!
多文件编写

这里我在test.c中,主要是实现对于游戏运行时的测试;在game.c中,主要是对于游戏思路的实现;在game.h中,主要是存放一些宏定义以及对于一些函数的声明

3.2.1 test.c里面的内容(代码中附带注释,方便读者更好的理解代码)

test.c里面的内容

3.2.2 game.c里面的内容

game.c
game.c
game.c

3.2.3 game.h里面的内容

game.h

3.2.4 效果

代码效果展示

4.总结

如果你是读到这里的读者,请给自己一个大拇哥。你已经战胜了99%的用户了。如果看完后,能够独立的写出来那就更棒了!!!
编程不是看出来的,而是练出来。加油!!!✊✊✊

相关推荐

  1. tkinter来实现扫雷游戏

    2024-05-02 11:26:01       47 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-05-02 11:26:01       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-05-02 11:26:01       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-05-02 11:26:01       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-05-02 11:26:01       18 阅读

热门阅读

  1. 【算法小白周赛1D】K阶恒星系 - 题解和代码

    2024-05-02 11:26:01       14 阅读
  2. ArrayList常考面试题

    2024-05-02 11:26:01       11 阅读
  3. Xcode安装与配置

    2024-05-02 11:26:01       10 阅读
  4. 关于kline-chart图表程序的一些构想

    2024-05-02 11:26:01       11 阅读
  5. 【无标题】

    2024-05-02 11:26:01       10 阅读