| |
|
开发:
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语言 - 扫雷游戏 |
1.主函数(玩家选择流程)之前博客有说明,因此这里直接给出
2.游戏部分(game函数)左图为扫雷的初始界面,可以看到,游戏界面是一个 9×9 的棋盘,因此我们可以使用二维数组,而上图的10为雷的数量。而右图是扫雷中的界面,若用数组存储,那么在这个数组中应有十个元素存储的是代表雷的字符,而存储雷的位置不应被玩家所看到,因此我们事实上需要两个数组,一个用来存储雷,一个如右图,打印出来雷的信息。
数组定义如上,依旧采用了符号常量,但如上图数组是9×9,我却将常量设为11,这是因为检查雷的数量时,需要将所指定下标元素一周的元素都访问并检查是不是雷,如下图: ?这样,当我们输入的下标是边缘时,程序实际上需要访问并检查的元素应不仅是我们可视的棋盘界面,因此我们在定义棋盘时应比我们看到的大一圈,这样的实现方式其实就是将行数,列数比玩家能看到的多2 否则,有可能造成严重后果,若我们不定义为11而定义为9,那么当输入下标为边缘时,就会造成数组越界访问 Initboard函数首先,我们将两个棋盘都初始化,建议将mine数组全部初始化为字符 '0' (原因在下面会说明),将show数组全部初始化为字符 '*',代码实现如下:
这里的参数不仅有字符指针,数组的行数,列数,第四个参数是我们在传参时自己希望初始化的字符,因为此函数需要为两个数组初始化,因此需要不同的字符 Setmine函数数组被初始化后,就需要向数组中布置雷了,此时我们需要用到的是mine数组,因为需要电脑以下标的方式随机产生雷,因此和前两个游戏一样,需要用到 rand( ),srand( ),time( )函数 在定义数组大小时,为了防止越界定义的数组行列都比玩家可以看到的多2,但布置雷时,其实使用玩家可以看到的9×9数组即可,因此定义两个符号常量如下,为了方便修改,雷的数量也同样定义为符号常量:
函数代码实现如下:
Printboard函数此函数用于将数组打印到屏幕上让玩家可以看到,只需要打印show数组,根据打印出的雷的信息来判断下一步选择的下标位置,代码实现如下:
为了方便玩家输入坐标,在编写打印函数时,在最上和最左侧分别打印了行号和列号 Finemine函数最后玩家需要排查雷,当玩家输入的坐标刚好存放了雷时,就提示被炸死了并结束本次游戏,否则就继续,直到所剩下标位置都为雷时,就提示排雷成功并结束本次游戏 首先,将代码给出如下:
此函数需要检查下标周围雷的数量信息并把这些信息存放并打印给玩家,因此所给参数应同时包括show,mine数组的地址,如上代码中有一函数Numbermine用于给出输入下标周围雷的数量 Numbermine函数mine数组初始化时,我们将里面的元素都初始化为字符 '0',而在Setmine函数中电脑将随机设置雷的位置赋值为字符 '1',根据ASCII表,字符'0'和字符‘1’相差为1,因此我们只需要将玩家输入的坐标周围一圈8个数组元素的值相加,相加后的和再除以8个字符'0'的和即可得到周围雷的数量,这也是初始化为'0'的原因,代码实现如下:
static关键字将此函数改为只能在本源文件被使用 至此,游戏实现所需要的函数已经定义完毕,game函数代码实现如下:
game.h头文件如下:
运行结果如下: 失败: ? 成功: 为了方便测试,我将雷的数量修改为80,并且将雷的位置提前打印出来 |
|
C++知识库 最新文章 |
【C++】友元、嵌套类、异常、RTTI、类型转换 |
通讯录的思路与实现(C语言) |
C++PrimerPlus 第七章 函数-C++的编程模块( |
Problem C: 算法9-9~9-12:平衡二叉树的基本 |
MSVC C++ UTF-8编程 |
C++进阶 多态原理 |
简单string类c++实现 |
我的年度总结 |
【C语言】以深厚地基筑伟岸高楼-基础篇(六 |
c语言常见错误合集 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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/23 13:14:40- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |