首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >扫雷游戏(仅用数组和函数实现)

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

作者头像
埋头编程
发布2024-10-16 17:15:13
发布2024-10-16 17:15:13
2170
举报
文章被收录于专栏:C/C++C/C++

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里面的内容
test.c里面的内容
3.2.2 game.c里面的内容
game.c
game.c
game.c
game.c
game.c
game.c
3.2.3 game.h里面的内容
game.h
game.h
3.2.4 效果
代码效果展示
代码效果展示

4.总结

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-05-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.引言
  • 2.扫雷游戏的规则
  • 3.编程实现
    • 3.1 编程思路
    • 3.2 代码实现
      • 3.2.1 test.c里面的内容(代码中附带注释,方便读者更好的理解代码)
      • 3.2.2 game.c里面的内容
      • 3.2.3 game.h里面的内容
      • 3.2.4 效果
  • 4.总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档