c语言 判断字符数组里是否有数_C语言扫雷小游戏源码下载和思路解析
在 《C语言扫雷游戏演示和说明》一节中,我们对扫雷游戏的玩法进行了介绍和演示,这节就来分析一下它的源代码。扫雷游戏源代码百度网盘下载地址:https://pan.baidu.com/s/1sncBcnz密码: wcfg各位读者不防先将源代码下载浏览一遍,记住关键的几个函数,整理一下不了解的知识点,做到心中有数。一、关键知识点下面请各位读者先学习一下该游戏中涉及到的几个关键知识点,有了这...
在 《C语言扫雷游戏演示和说明》一节中,我们对扫雷游戏的玩法进行了介绍和演示,这节就来分析一下它的源代码。扫雷游戏源代码百度网盘下载地址:https://pan.baidu.com/s/1sncBcnz 密码: wcfg各位读者不防先将源代码下载浏览一遍,记住关键的几个函数,整理一下不了解的知识点,做到心中有数。
一、关键知识点
下面请各位读者先学习一下该游戏中涉及到的几个关键知识点,有了这些必备条件,我们才好讲解扫雷的设计思路。
1) 改变输出文本的颜色
扫雷游戏的整个界面,都是由特殊字符组成,小方块 ■ 是灰色的,方框 □ 是白色的,炸弹 ● 是黄色的,等等。这就涉及到如何改变文本的输出颜色,请大家猛击《彩色版的C语言,让文字更漂亮》了解详情。
2) 键盘监听
在扫雷游戏中,当用户输入是否开始游戏的 Y/N 时,程序能够自动监听,当用户输入完成后,不用回车,程序立即做出反应,这就用到了键盘监听。请大家猛击《C语言非阻塞式键盘监听》了解详情。
3) 获取随机数
扫雷游戏中,雷区会随机出现在整个区域的任意位置,没有任何规律,这就要求程序能够生成随机数值,由随机数设置雷区的位置。有关随机数的产生请大家猛击《C语言获取随机数》了解详情。
二、扫雷游戏初始化
扫雷游戏初始化过程中,我们使用到了 3 个二维数组:mine、show、mineDow:
mine 数组用于初始化扫雷游戏。具体做法是:首先默认整个二维数组中没有雷区,全部设为安全区域(用 0 表示),然后在二维数组中随机安插一定数量的雷区;
show 数组用于每次将结果输出给用户。当用户输入完成后,show 数组会根据用户的输入对存储的数据做适当的更新,然后输出给用户;
mineDow 数组中每个数据表示的,该位置相邻的周围雷区的数量,此数组的建立为的是实现“点击一个位置,开出一片安全区域”的效果
提示:在源代码的 game 函数中,在 mine_sweep() 函数之前的所有工作,都是初始化工作。
三、扫雷功能的实现
扫雷功能的实现,整体思路是:
判断用户输入坐标处是否是雷区;
更新 show 数组:如果是雷区,将 show 数组中该坐标位置上由字符 ‘*’ 改为表示雷区的字符 ‘o’;如果不是雷区,借助 mineDow数组中存储的信息,使用递归的方式,找到其他符合条件的非雷区区域(show_deal 函数的作用),将找到的所有区域一并更新到 show 数组中;
将新的 show 数组以一定的格式输出,反馈给用户;
提示:show_deal 函数找的是该区域既不是雷区,其周围也没有雷区的区域,将其全部更新到 show 数组中。一旦遇到周围有雷区的区域(这部分区域也会被更新到 show 数组中),则递归结束。
扫雷功能的具体实现,可见源代码中的 mine_sweep 函数。
四 扫雷界面的优化
扫雷界面,实际上是将 show 数组中存储的数据换了一种方式输出出来。例如,show 数组中存储有字符 ‘*’,在输出时,统一换为“■”;表示雷区的字符 ‘o’,统一换为 ‘●’,等等。
注意:用于替换的字符,并不是普通的字符,它们并不在 ASCII 码范围内,是宽字符,占用两个字节。
采用此种方式,再配以合适的颜色(采用Windows API),可以将二维数组以如下的这种形式反馈给用户:
扫雷界面的详细优化代码,可见原代码中的 display_board() 函数的实现。
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)