| |
|
开发:
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语言扫雷详解 |
使用工具:vs2022 实现C语言扫雷,需要创三个文件:tese.c? game .c? game.h test.c? ?程序的入口,主函数 game.c? 函数的具体实现 game.h? 头文件的引用和函数的声明 test.c? 代码如下:
效果如下: 输入1,开始游戏 ?输入0,退出游戏 ?输入其他数,选择错误,重新输入 game_menu ,game_play等函数均在game.c中实现,头文件的声明和函数的引用均在game.h中。 game.c? ?游戏函数的具体实现分为以下几步 1,初始化二维数组(game_init函数) 我们这里已经创建了两个二维数组,show数组用来打印在屏幕上,mine数组用来存储雷。shou数组从1 1?到 9 9的元素我们全部初始化成 *?号,mine数组? 1 1到 9 9?全部初始化成字符'0' 创建数组:
初始化函数:
2,打印扫雷棋盘(game_menu函数) 这里需要创建两个11 * 11 的二维数组,但是实际打印出来的是 9 * 9 的效果,因为,扫雷在扫到边界的时候,会出现越界的情况,例如,用户输入 11 11,但是,11 * 11 的二维数组下标最大是 10 10,因为玩游戏的不一定都是懂编程的人,所以用户输入我们让他从 1行1列开始,如果让用户从0行0列开始,大部分人都很难习惯。所以在 9 * 9?二维数组的基础上,我们在往上扩大两位数,这样用户输入不需要按照程序员的逻辑来输入坐标,也不会导致越界。
打印棋盘效果 3,让电脑随机生成地雷(game_npc函数) 这里由于打印出来的是9 * 9?棋盘的效果,所以我们随机生成10个雷,C语言中生成随机数需要使用rand函数,但是如果使用rand函数,你会发现,每次启动程序生成的随机数都是一样的,为了避免这种情况,我们在使用rand函数之前,需要使用srand函数,在srand函数中用time时间戳来更新,类型转换成unsigned int 。srand函数在程序中只需要使用一次即可,所以我们在test.c的main函数中使用一次即可。随机生成的地雷放在mine数组中,我们用1代表地雷,0表示无雷。
埋完雷后的mine数组打印,1表示雷,0表示无雷 4,扫雷(ganme_clean函数) 使用两个变量接收用户输入的坐标,1,首先判断用户输入是否越界 2,使用变量作为二维数组的下标判断是否为 '1',如果是'1',说明扫到雷了,终止游戏,如果是'0',没有扫到?雷,计算出坐标周围8个雷的数量,以此循环,直到扫完全部的雷。
计算雷的数量:game_qua函数 计算出用户输入的坐标周围8个格子有几个雷,首先我们知道,存储雷的二维数组是char类型的,但是返回值是int类型的,但是,在设计的时候,雷是 '1',非雷是'0',在ascll表中,0是48,1是49,如 过用1?去?减 0,也就等于 49?减 48 ,得到的值还是1,那么我们使用加法,把坐标周围的8个元素全部加起来,再减去 8 * '0',就得到了坐标周围雷的总数,这个时候雷的总数返回去,再加上'0' ?此时就可以把cont赋值给二维数组了。
game.h(函数的声明和头文件的引用)
扫雷游戏效果: 我们把雷的数量改成 78,也就是说只有三个位置没有雷,只要排查完三个坐标,游戏就胜利。 展示一下扫完雷,游戏胜利的效果: ? 以上就是扫雷的逻辑和具体代码,欢迎大家评论和研究? |
|
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 12:51:27- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |