从零开始学习C语言日记——DAY27制作一个扫雷游戏

一、游戏框架

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAYmVhcmJlYXJ3d3c=,size_20,color_FFFFFF,t_70,g_se,x_16

 

 

可以使用3个文件分开编写

 

第一个test.c测试游戏逻辑的文件——基本结构

 

第二个game.h关于游戏相关的函数声明,符号声明,头文件的包含——定义

 

第三个game.c游戏相关的函数的实现——每一个函数模块的内部逻辑的编写

 

二、程序

首先是test文件

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAYmVhcmJlYXJ3d3c=,size_18,color_FFFFFF,t_70,g_se,x_16

 

 

菜单函数——给用户提供信息

 

 watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAYmVhcmJlYXJ3d3c=,size_12,color_FFFFFF,t_70,g_se,x_16

 

 

主函数是判断用户选择的具体内容

1为开始扫雷,并且调用game()函数

当0为打印退出游戏,break跳出循环,while(input)判断为0结束不再循环

当为其他任意数重新输入

 

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAYmVhcmJlYXJ3d3c=,size_15,color_FFFFFF,t_70,g_se,x_16

 

 

 

Game函数游戏执行的顺序和框架

此时用了rand函数生成一个随机数,需要引用一个头文件<stdlib.h>

如果用rand生成随机数是在0到RAND_MAX((int)0x7fff)之间,所以rand是返回了一个0到32767之间的数。但是不管是第一遍还是第二遍之后生成的都是同样的数。

解决需要在调用rand之前先调用srand来设置随机数的生成器。

 

Srand()——设置一个随机的起点

如果在括号里输入一个固定的值那么回生成一个随机值,但是这个随机值一直都是同一个数。传一个一直在发生变化的值就可以解决这个问题了。

电脑的时间一直在发生变化,我们把时间戳传入就可以解决了

可以使用一个库函数——time()函数——这个库函数就会返回一个时间戳,返回的是调用这个函数的那个时间点和计算机的起始时间。

先放入一个空指针NULL。Time是有符号整型,Srand需要的类型是nusigned int类型(无符号整型),我们把time的返回值强制转换nusigned int类型即可。

Time的使用需要引用头文件<time.h>

 

如果把srand((unsigned int)time(NULL));这段程序放在game函数里的话随机值会离得很

近,srand确实要在rand前面调用,但是随机值起点的设置只需要调用一次就可以了。

 

如果放入game函数里玩一次就要设置一次不太好。应该放在主函数里即可。

 

之后rand有了随机值之后把得到的随机值模上行和列,再进行判断就好

 

 

现在分别看每个函数的内容——————game.c

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAYmVhcmJlYXJ3d3c=,size_20,color_FFFFFF,t_70,g_se,x_16

 

 

因为要重置两个数组所以需要设置单独的返回值变量set

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAYmVhcmJlYXJ3d3c=,size_19,color_FFFFFF,t_70,g_se,x_16

 

 

打印棋盘内容

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAYmVhcmJlYXJ3d3c=,size_18,color_FFFFFF,t_70,g_se,x_16

 

 

布置雷的信息这里采用rand设置随机值,具体查看之前的说明

判断格子内是否为0为0代表没有雷,则填入1.

 

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAYmVhcmJlYXJ3d3c=,size_20,color_FFFFFF,t_70,g_se,x_16

 

 

 

 

判断玩家输入的的坐标是否合法,并且判断输入的坐标是否为雷区。

外部循环为游戏胜利的条件win<9*9-雷的个数一旦达到=即获胜

当选择完之后当前格子没有雷则进行判断周围8格有没有雷并且将有几个雷的信息返回到判断函数

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAYmVhcmJlYXJ3d3c=,size_20,color_FFFFFF,t_70,g_se,x_16

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值