IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> C——二维数组实现扫雷小游戏 -> 正文阅读

[C++知识库]C——二维数组实现扫雷小游戏

扫雷是早些年前一款经典有趣的电脑单机游戏,在享受游戏乐趣的同时,也能锻炼自己的大脑思维能力。而在学习了二维数组的基本内容之后,我们也可以通过编写代码来实现简单的扫雷小游戏。对于采用C语言实现一个简单的小程序,通常包含三个文件(两个源文件和一个头文件)来执行,即test.c、game.h、game.c。三个不同的文件分别用于实现自己的作用,以保证整个程序井井有条。其中,

test.c——用于测试和实现整个游戏的基本流程;

game.h——用于包含整个程序中用到的头文件以及声明所需要使用的变量、宏和函数等;

game.c——用于实现游戏的各像功能的函数的具体内容。

0 基本思路

对于一个初级的扫雷小游戏,总共是有9×9个格子,存储着雷或者是周围雷的个数的信息。那么为了实现这样的信息存储功能,采用两个9×9的二维数组分开存储这两类信息。在这个基础上,可以建立起相应的数组,然后进行初始化,采用随机数种子来生成雷区,随后计算每个位置(除雷区外)周围的雷的数量。在这些基本的信息准备完成之后,就进入正常的游戏流程。玩家输入坐标以表示需要排查的位置,系统由此给出相应位置的信息,并判断游戏状态。此外,游戏提供标记雷的位置的功能,方便玩家判断。

1 游戏界面

为了使游戏更加的系统及界面友好,通过printf()函数输出一些基本的游戏流程指导信息,以及构建扫雷游戏的界面。为此,创建一个专门用于输出的二维数组作为游戏界面打印函数的参数,结合循环输出二维数组中的信息以实现实时更新游戏界面的信息。如下

?

?

?为了方便玩家更好地读取每个位置,在打印函数中通过printf()函数添加了一些辅助信息。

2 初始化信息及生成雷区

在创建好存储信息的二维数组之后,需要分别对其进行相应地初始化。对于存储雷或者是其周围的雷的数量的数组,将其初始化为字符‘0’,而对于用于打印的数组,将其初始化为字符‘*’;初始化函数以数组和相应的字符为参数,结合循环的方式对每个位置依次赋值。如下:

而雷区的生成采用随机数种子的方式来实现,通过取余符号(%)来控制随机数的大小区间,从而给出雷的位置坐标,同时对相应位置的存储雷的数组中赋值为字符‘1’,代表该位置是一个雷。此外,也需要注意随机数发生重复的可能性,在赋值前进行重复性判断。如下:

?

?

3 计算并存储周围雷的数量信息

在生成了雷区的信息之后,可以进一步计算每个位置(除雷区外)周围的雷的数量,即依次判断周围一圈位置是否为雷区并计数,同时将计数结果存储到专门的数组的对应位置中。为了方便对边界位置的周围进行判断,在创建二维数组时考虑上下左右各增加一行,以避免出现越界访问的问题。同时,相应的数组都采用相同的创建方式,以更好的对应每个位置。如下:

?

?4 游戏流程

在基本的信息都生成且存储完毕之后,玩家就可以正式开始游玩了。在正式的游玩过程中,玩家首先时给出需要排查的位置,随后系统给出相应的判断,最初的判断是是否踩雷,如踩雷,则游戏结束,反之,游戏继续往下走。如下:

?如果游戏继续往下走,那么首先需要给出该位置周围的雷的数量的信息。同时,如果该信息为0,即意味着该位置周围一圈的位置也肯定不是雷区,所以要需要给出相应的雷的数量信息,如此往下,实现爆炸式的展开。在此之前我们已经计算出来了每个位置周围的雷的数量的信息,因此,只需要采用相应的二维数组中的数据作为判断条件来实现递归循环,即可实现爆炸式展开。如下:

?

?为了方便游戏的继续进行,可以添加标记功能,即玩家可以标记可能的雷的位置。对于该功能,整体采用switch……case的嵌套循环来实现,而对于标记信息的存储,采用两个一位数组分别存储代表位置的两个坐标信息,数组的大小与雷的数量有关。在这里,我简单的实现了标记的添加与删除功能,如下:

?

?

?

?

?

?

?游戏继续往下走,还需要判断玩家是否获胜。在添加了标记功能之后,有两种情况代表着玩家获得了胜利:

1. 剩余为排查的位置于雷的数量一致

2. 标记出来了所有的雷区

具体的实现步骤可以采用相应数组中的信息进行判断,如下:

?

?

?5 头文件及游戏试玩

整个程序包含的头文件如下:

游戏的试玩过程如下:

?

?

很不幸游戏直接结束了!

重玩一把,如下:

?

?成功实现了爆炸式展开,后续的试玩过程就不放在这边了。

6 结语

按照上面的基本步骤,一个初级的扫雷小游戏及就完成。因为整个程序采用自定义的宏看来代替具体的数字,因此,对宏的简单修改就可以实现游戏基本设置的修改,也可以实现初级的扫雷小游戏向高级扫雷的简单转变!

?

?

?

?

?

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-02-16 12:52:35  更:2022-02-16 12:55:36 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 7:25:10-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码