这是一篇关于如何设计扫雷游戏的文章,接下来请看详情
构思:扫雷游戏是一个代码量比较大的游戏,所以我们在设计的时候,可以创建多个文件进行写代码,游戏设计的每一步用函数进行封装,这样代码看起来就会简洁,整体更加美观。
主体:第一步搭建好main函数的主体
进行一个程序设计的时候,需考虑玩家要不要玩,所以可以写一个输入让玩家选择
这一步需要设计一个菜单 用函数封装
玩一把之后考虑是不是在玩一把,我们采用do while 循环结构
选择玩游戏后,就是进入到游戏设计的代码里,这里我们采用Switch语句 进行选择
游戏设计,我们用game()函数封装
游戏设计的主体思想:扫雷游戏 我们可以用二维数组进行编写,需要两个数组 一个是用来存储累的个数,一个是用来显示给玩家看的
棋盘的大写我们可以写一个 头文件定义,方便以后修改 我这里写的是9x9的大小
扫雷游戏 当选择一个坐标后,要计算他周围8个坐标位置累的个数,为了边边的位置越界导致计算错误 我们在9x9的外边加上一个外框 只用来存储,不放雷,这里我们用字符0表示没有雷 字符1表示雷(方便后面我们计算累的个数,如果你有更好的方法,也可以优化一下),加上外框之后就变成11x11的棋盘了,这里我们也定义一下
接下来我们对棋盘初始化
布置好之后我们可以打印出来看看对不对
布置雷
每一次游戏开始类都是随机布置的 我们可以用rand()函数,由于rand函数是基于一个种子然后生成的伪随机数 只要种子不便他每次生成的随机数都是不变的,这时候我们就要调用srangd()函数(头文件 #include <stdlib.h>)srand()也有他的种子,我们可以用时间作为他的种子,让每一次的随机数都是随机的 时间的头文件(#include <time.h>)时间的返回值是unsigned int
srand()函数只需在整个代码中调用一次就可以了,
int x = rand() % row + 1;
int y = rand() % col + 1;
做到每次坐标都是随机的
count代表累的个数 布置成功之后,count--,直至循环结束
最后一步 排雷
排查雷 直至把雷排完游戏结束,所以我们这里用while循环 定义一个变量 int win
每排出一个雷 win++ 当win==10 跳出循环 排雷成功 游戏结束
排雷写入输入的坐标表,并且判断是否合格
否则提示玩家
输入正确 判断是不是雷
是雷游戏结束
否则进入下一步排雷
Get_Ray()用于计算此坐标周围累的个数,
十 八 十六
这里的计算原理是 字符的ASCLL码十进制的值进行计算 '1'-'0'=1
循环直到win==71 排雷成功 游戏结束
知识总结 这里用到知识有 二维数组 函数 循环 (这三个为重点)代码有瑕疵 希望大佬能帮我指正 万分感谢
整个代码参见
头文件
main函数
游戏函数