小游戏---猜数字+扫雷 保姆级别实现(含源码)

张开发
2026/4/20 17:07:11 15 分钟阅读

分享文章

小游戏---猜数字+扫雷 保姆级别实现(含源码)
引入C中大部分知识点到这篇文章我们以及共同学习了很多那么我们这篇文章来实际操作做两个小游戏小游戏中会涉及到循环函数调用数组等基本知识对这些还不太清楚的友友可以自行查看博主前面的文章。猜数字游戏实现游戏设定给定数字范围在 1-100 之间随机设置一个值为本轮游戏需要玩家猜测的数据值根据玩家输入的数据与所猜数据大小比较来帮助玩家猜出同时设置一轮游戏只有五次机会五次机会内未猜出数据则游戏失败玩家可以选择是否继续.....游戏实现1.菜单打印在进入一个游戏页面时会弹出可以让玩家选择的界面当一轮游戏结束之后玩家再次选择是否继续那么我们为了方便且避免代码冗余我们将打印菜单封装成一个函数在循环中调用即可2.游戏循环进行在玩家选择开始玩继续玩时游戏继续向下推进那么此功能需要循环来辅助只有当玩家选择退出游戏时循环被打破玩家退出游戏程序结束。不论玩家选择是否继续菜单都进行打印循环至少要进行一次供玩家选择符合do...while 循环特点在玩家做出选择之后不同选择对应不同的程序走向使用分支语句switch辅佐3.随机数的产生系统设置的随机数应该在随时变化这里调用 rand 函数实现需包含头文件stdlib.htime.h)rand函数rand函数适用于产生伪随机数的但是想要每一轮的随机数不同还需要更改一下它产生伪随机数的种子从而产生一个随时会变化的随机数。更改种子的函数我们使用 srand 函数参数我们需要保证每次产生时都在变化所以我们使用 TIME 时间总是一分一秒的过去使用时间来作为函数参数最为合适不过需要注意的是 srand 函数参数要求为 unsigned int 类型使用强制类型转换来实现。种子已经种下接下来就要开始使用 rand 函数来实现随机数的产生rand 函数的取值范围是 [ 0 - RAND_MAX ]此时我们游戏设定的取值范围是 1-100我们可以通过取模运算来实现。4.游戏次数限制当每次玩家进入游戏时设置次数变量为5每次循环过后进行 自减运算 直至次数耗尽则游戏失败。代码实现易错点1.rand函数范围rand 函数 % 100 产生的余数是 0-99 不符合题意1-100加1之后整体范围向后调整在取模运算之后得到的数字范围不符合题意时要进行微调。2.玩家给出的数字与程序产生的随机数大小比较此时一定要判断正确给出玩家正确的范围引导若给出错误❌那真的是完全向反方向发展......3.随机数放置的位置不能处于猜数字的循环中这一点千万要谨记一定要注意它的位置要是放入循环中在五次机会中随机数一直在变那真的是灾难了4.这里的switch语句中case 后面的语句可以用 枚举 enum实现提高代码可读性自定义类型下---不太懂的友友可以看博主这篇文章猜数字小游戏到此就实现完成了若还有好的想法改进欢迎评论区留言共同学习进步扫雷小游戏实现游戏设定网页版的扫雷都是大家童年的记忆今天我们来实现一个简易版扫雷。首先玩家根据菜单选择是否进入游戏继续游戏系统自动设置雷的坐标玩家在控制台输入坐标开始扫雷该坐标非雷则输出坐标一圈雷的数量当推测出某坐标是雷则进行标记若扫到雷则直接显示玩家被炸鼠游戏结束。游戏实现1.游戏主体由上述 猜数字小游戏 基础本次游戏也采用首先打印封装过的菜单函数再使用do...while循环和switch语句构成游戏主体决定玩家是否开始游戏继续游戏2.构造扫雷数组并初始化扫雷的主体是一个矩阵我们用二维数组来实现定义一个二维数组非雷的地方放置0雷的地方放置1那么问题来了若玩家输入一个坐标此时坐标非雷且周围有一个雷我们将1放置在该坐标中那么此时我们根本不能辨别此时的坐标是雷还是非雷且周围坐标有一个雷解决办法放置两个一摸一样的数组一个用来展示给玩家一个用来放置雷的信息此时还有一个问题当我们遍历该坐标周围八个坐标时当坐标处于数组边界势必会出现数组越界的情况那么此时我们应该扩大数组边界但是数组边界一圈不放置有效信息供玩家访问只是为了解决数组越界而创造。下文首先使用解决办法1构造两个数组来实现在创建二维数组时我们要给扫雷难度留有余地在网页版本中大家都玩过不同级别的扫雷在定义数组大小时我们采用 #define 来定义数组大小 以方便以后更改。创建好数组之后开始初始化数组这里的 * 是字符将两个数组均设置为字符数组方便使用但是需要注意这里的 放置雷信息数组就是 0 1 是字符非数字。函数调用函数声明函数定义3.打印数组在玩家选择开始游戏时要打印出无雷信息的数组供玩家选择坐标此时为方便玩家输入坐标创建数组时要注意打印数组行列以便观察函数声明函数调用包含雷信息的数组 mine 不会对用户展示此处使用 mine 数组展示函数定义4.布置雷布置雷的位置是随机的玩家开启每一轮的游戏雷的位置也会随机发生变化与上述猜数字小游戏类似我们还是使用上述游戏中的 rand 和 srand 函数使用。将雷的坐标内容改变为字符 1放置在 mine数组中。函数声明布置雷的个数方便更改函数调用完成布置后使用打印函数观察结果是否达到预期函数定义5.排查雷到这步时我们的前期准备工作以及完成就要开始玩家旅程了函数声明1.PlayBoard 函数是玩家开始游戏引导游戏进程的函数2.GetBome函数是在玩家输入排查坐标后非雷位置统计周围一圈有几个雷的函数3.AddFlag函数是在玩家推断出某坐标位置是雷对该位置进行标记函数调用函数定义注意此时坐标元素相加是字符相加算出几个雷是 int 型数据减去 0 得到放入数组中时再加上即可。当玩家将所有非雷坐标都排查过后此时数组中只剩下雷的坐标此时玩家获得胜利用变量 win 来标记win 达到数组元素所有非雷的个数时挑战成功源码以上就是使用解决办法双数组的扫雷游戏实现此处是源码合集方便大家查看.....总结1.代码可以多文件书写方便整理2.在传参过程中虽然只需要 9*9 的矩阵来存储信息但是传参仍然传 11*11可以使用时函数参数是 row* col 数组传参千万不能省略防止数组越界的两行。3. 使用 rand 函数时除了要注意使用 srand 函数产生 种子还要记得取模运算时产生的范围例如rand % m产生的是 0 - m-1的数据不符合题意要进行微调4.合理使用 #define 方便代码重复利用5.在使用数组时一定要谨记此处的数组是字符数组不要用整型去计算。

更多文章