您当前的位置:首页 > 计算机 > 编程开发 > C语言

C语言扫雷游戏源码下载、源码解析和设计思路

时间:12-29来源:作者:点击数:

《C语言扫雷游戏演示和说明》一节中,我们对扫雷游戏的玩法进行了介绍和演示,这节就来分析一下它的源代码。扫雷游戏源代码下载地址:

各位读者不防先将源代码下载浏览一遍,记住关键的几个函数,整理一下不了解的知识点,做到心中有数。

一、关键知识点

下面请各位读者先学习一下该游戏中涉及到的几个关键知识点,有了这些必备条件,我们才好讲解扫雷的设计思路。

1) 改变输出文本的颜色

扫雷游戏的整个界面,都是由特殊字符组成,小方块 是灰色的,方框 □ 是白色的,炸弹是黄色的,等等。这就涉及到如何改变文本的输出颜色,请大家猛击《彩色版的C语言》了解详情。

2) 键盘监听

在扫雷游戏中,当用户输入是否开始游戏的 Y/N 时,程序能够自动监听,当用户输入完成后,不用回车,程序立即做出反应,这就用到了键盘监听。请大家猛击《C语言非阻塞式键盘监听》了解详情。

3) 获取随机数

扫雷游戏中,雷区会随机出现在整个区域的任意位置,没有任何规律,这就要求程序能够生成随机数值,由随机数设置雷区的位置。有关随机数的产生请大家猛击《C语言获取随机数》了解详情。

二、扫雷游戏初始化

扫雷游戏初始化过程中,我们使用到了 3 个二维数组:mine、show、mineDow:

  • mine 数组用于初始化扫雷游戏。具体做法是:首先默认整个二维数组中没有雷区,全部设为安全区域(用 0 表示),然后在二维数组中随机安插一定数量的雷区;
  • show 数组用于每次将结果输出给用户。当用户输入完成后,show 数组会根据用户的输入对存储的数据做适当的更新,然后输出给用户;
  • mineDow 数组中每个数据表示的,该位置相邻的周围雷区的数量,此数组的建立为的是实现“点击一个位置,开出一片安全区域”的效果

提示:在源代码的 game 函数中,在 mine_sweep() 函数之前的所有工作,都是初始化工作。

三、扫雷功能的实现

扫雷功能的实现,整体思路是:

  1. 判断用户输入坐标处是否是雷区;
  2. 更新 show 数组:如果是雷区,将 show 数组中该坐标位置上由字符 ‘*’ 改为表示雷区的字符 ‘o’;如果不是雷区,借助 mineDow数组中存储的信息,使用递归的方式,找到其他符合条件的非雷区区域(show_deal 函数的作用),将找到的所有区域一并更新到 show 数组中;
  3. 将新的 show 数组以一定的格式输出,反馈给用户;

提示:show_deal 函数找的是该区域既不是雷区,其周围也没有雷区的区域,将其全部更新到 show 数组中。一旦遇到周围有雷区的区域(这部分区域也会被更新到 show 数组中),则递归结束。

扫雷功能的具体实现,可见源代码中的 mine_sweep 函数

四 扫雷界面的优化

扫雷界面,实际上是将 show 数组中存储的数据换了一种方式输出出来。例如,show 数组中存储有字符 ‘*’,在输出时,统一换为“■”;表示雷区的字符 ‘o’,统一换为 ‘●’,等等。

注意:用于替换的字符,并不是普通的字符,它们并不在 ASCII 码范围内,是宽字符,占用两个字节。

采用此种方式,再配以合适的颜色(采用Windows API),可以将二维数组以如下的这种形式反馈给用户:

 

扫雷界面的详细优化代码,可见原代码中的 display_board() 函数的实现。

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门