完成扫雷程序,并进行以下优化:
①第一次下子,不炸死。(如果第一次扫到雷区,则将其置为无雷区,为保证雷的数目不变,再次随机布一颗雷)?
②坐标周围没雷,可以实现展开。
思路:
1、设置游戏区域(10x10,考虑到边界问题,为统一操作,故设为12x12)
雷区面板和玩家操作面板(为方便操作,两面板保持一致)
附注:memset()函数介绍
void memset(void s, int ch, size_t n);
函数解释:将s中当前位置后面的n个字节 (typedef unsigned int size_t )用ch 替换并返回s。
memset:作用是在一段内存块中填充某个给定的值,它是对较大的结构体或数组进行清零操作的一种最快方法。
memset()函数原型是extern void memset(void buffer, int c, int count)
其中,buffer:为指针或是数组;c:是赋给buffer的值;count:是buffer的长度.
2、打印游戏菜单
3、在雷区面板布雷
附注:srand函数和rand函数介绍
srand函数是随机数发生器的初始化函数。
原型:void srand(unsigned int seed);srand和rand()配合使用产生伪随机数序列。
rand函数在产生随机数前,需要系统提供的生成伪随机数序列的种子,rand根据这个种子的值产生一系列随机数。如果系统提供的种子没有变化,每次调用rand函数生成的伪随机数序列都是一样的。srand(unsigned seed)通过参数seed改变系统提供的种子值,从而可以使得每次调用rand函数生成的伪随机数序列不同,从而实现真正意义上的“随机”。通常可以利用系统时间来改变系统的种子值,即srand(time(NULL)),可以为rand函数提供不同的种子值,进而产生不同的随机数序列
4、定义游戏
(1)获取周边雷的数目
(2)第一次扫雷不被炸死
(3)打印游戏面板(反馈周边雷的数目,然后显示周边无雷区)
玩家玩游戏操作
(有待改进的地方希望道友们给予指点,嘻嘻)
算法如下:









“C”实现扫雷游戏(优化版)
原文:https://blog.51cto.com/14235507/2376065