| |
|
开发:
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语言常见错误合集 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |