C语言——初阶扫雷游戏制作

一、扫雷游戏功能说明及制作思路说明

1.1扫雷游戏功能说明

  • 使用控制台实现经典的扫雷游戏
  • 游戏可以通过菜单实现继续游玩和退出游戏
  • 扫雷的棋盘是9*9的格子
  • 默认布置十个雷
  • 排查雷思路如下
  1. 如果当前位置不是雷,就显示周围有几个雷
  2. 如果当前位置是雷,则游戏失败结束
  3. 把除10个雷之外的所有非雷都找出来,则游戏胜利结束

1.2扫雷游戏所需条件

  1. game.h:此文件包含所对应函数的头文件
  2. game.cpp:此文件实现所对应函数的功能
  3. tect:此文件包含游戏的测试逻辑

1.3扫雷游戏制作思路

  1. 创建菜单:通过创建菜单实现开始游戏或继续游玩和退出游戏
  2. 创建棋盘:创建9*9的棋盘以布置雷和排查雷提供条件
  3. 打印棋盘:先把9*9的棋盘打印*为布置雷做准备
  4. 布置雷:创建随机数把10个雷随机散布棋盘上
  5. 排查雷:创建scanf函数把想要排查的坐标输入到棋盘中

接下来会以上面所提到的所需条件和制作思路进行讲解

二、扫雷游戏制作过程

1.创建菜单

菜单用do...while循环进行菜单选择,首先先写一篇菜单

此菜单通过menu函数在main函数进行声明,使用者通过输入1或0进行开始游戏或结束游戏,如果输入的数不是1和0,则需重新进行选择。使用者在菜单输入1后,则会通过game()函数开始游戏

 2.创建棋盘

先创建两组数组为区别布置好的雷和排查出的雷做出区分

因为上面的行和列由于经常使用,在game.h头文件进行宏定义

tips:为防止排查棋盘边的雷的坐标越界,需要给数组扩大一圈且不影响9*9棋盘的使用

在game.h的头文件中声明创建棋盘函数

创建棋盘函数在tect文件中的game函数实现调用

3.打印棋盘 

在game.h的头文件中声明打印棋盘函数

在game文件中实现打印棋盘,打印棋盘通过两个for循环进行打印行和列的棋盘

tips:由于打印了0~9的数组中的列的0包含0~9的数组中的行中的0,所以行只需要打印1~9的数组中的行即可,否则打印的棋盘不工整。

打印棋盘函数在tect文件中的game函数实现调用

4.布置雷 

在game.h的头文件中声明布置雷函数

在game文件中实现布置雷函数,棋盘里的行和列生成10个随机数的雷数,通过rand函数实现。每当进入while循环设置雷,则EASY_COUNT减1,直到在棋盘中布置好10个雷跳出循环。同时为保证雷的随机性需要生成随机坐标,判断设置雷是否为0,不是则为设置雷“1”.

随机数的雷数在game.h头文件中进行宏定义

由于调用rand()需要srand(),在tect文件中的main函数里设置srand函数

tips:srand函数和time函数需要包含头文件

布置雷函数在tect文件中的game函数实现调用

5.排查雷

在game.h的头文件中声明排查雷函数

在game文件中实现排查雷函数,当棋盘中的还有雷数时,将进入循环,每排查一个雷,win就会自增(后面会提),当win和雷数相等时,也就是排查完棋盘中的雷后,则宣布游戏胜利。

进入循环后,需判断输入坐标的合法性,如果输入的坐标有误或已经排查过的坐标,将需要重新输入

坐标无误后,对输入的坐标进行判断,如果输入的坐标是雷所在的坐标,则游戏失败,宣布游戏结束。如果输入的坐标不是雷所在的坐标,则对当前坐标周围一圈进行排查,如有雷则

雷数显示在当前所在的坐标。统计周围一圈雷个数需要专门创建统计周围一圈雷个数的函数,统计周围一圈雷个数后赋值给count,count和字符‘0’相加雷个数赋值show,并在当前输入坐标打印当前输入坐标周围的雷数,同时win自增

统计周围一圈雷个数的函数

第一种方法

通过for循环对当前输入的坐标的行和列,x和y,进行加一或减一进行定位周围一圈的坐标的雷数

第二种方法

写出当前输入的坐标的周围一圈的坐标并进行雷个数的统计,最后通过return返回函数

排查雷函数在tect文件中的game函数实现调用

三、扫雷游戏的运行及全部代码

1.扫雷游戏的运行

输入1和开始游戏并要求输入坐标

输入坐标进行排雷

游戏失败

退出游戏

游戏胜利的画面因为懒不玩就不打出来啦~

 二、扫雷游戏全部代码

game.h

 game

tect

 

觉得这篇博客不错的点赞和收藏支持一下呗!感谢您的观看! 

  • 29
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值