目录
1.1 游戏的运行逻辑
首先,扫雷在本质上来说就是一个操作两个二维数组来完成游戏的实现。一个二维数组完成对雷盘的埋雷,另一个完成给用户显示的功能。每排一个雷,数组就需要遍历所排的那个元素周边的所有8个元素,并且告知用户这个元素周边有几个雷 (用0来表示非雷,1来表示雷)
1.2 代码的实现逻辑
1.2.1代码分模块
首先,为什么要代码分模块呢?
从初学者的角度来说,这个虽说是个小游戏,但是总代码量也超出了200行,从实
际的角度讲,分模块写不仅可以讲各个函数独立化是主函数的代码量变少,对于初学者
来讲更有条理清晰之功效。简直是小白程序员必备技能
如何分模块呢?
首先,创建三个文件,一个测试的源文件(test.c),一个游戏的源文件(game.c)
一个游戏的头文件(game.h)
测试的源文件专门用来存放测试所需要用的代码(废话文学我算是把玩明白了),游戏
的源文件来存放实现游戏逻辑的代码,而游戏的头文件用来放各种头文件,和各种函数
声明。
1.2.2 打印菜单供用户选择
#include <stdio.h>
void menu()
{
printf("*************扫雷*************\n");
printf("**1.PLAY**************2.EXIT**\n");
printf("******************************\n");
}
void test()
{
int input=0;
do{
menu();
scanf("%d",&input);
switch(input)
{
case 1:
{
printf("游戏开始\n");
break;
}
case 2:
{
printf("游戏结束\n");
break;
}
default :
{
printf("请重新输入游戏代码");
break;
}
}
}while(input);
}
int main()
{
test();
}
1.2.3 操作游戏函数
测试test.c文件
首先既然是有两个雷盘,一个用于埋雷,一个用给展示给用户首先我们可以先建立两个二维数组用来代表这两个雷盘
雷盘的大小弄多少比较合适呢?
一般来说9*9的雷盘已经足够。
那是不是我们需要9*9的雷盘就需要9*9的二维数组呢?
这个问题我们就得考虑到数组越界的问题,当我们选择最边的那个元素,我们在遍历他周围元素的时候会不会发生越界,所以为了解决这个问题我们在建立二维数组的时候就直接比我们想要的雷盘大一圈。但给用户展示的时候不会展示到,用户还是操作着9*9的棋盘(为了以后方便修改我们直接写成定义符号的形式)
雷盘初始化(不光要初识化内部的雷盘,也要初识化用户看得到的雷盘)
棋盘的初始化将雷的棋盘全初识化成0;将展示的棋盘全初识化为*
埋雷
埋雷需要用到随机数产生1到9的数字,具体需要用到rand函数来实现,埋在内部雷盘里
展示雷盘
要将让用户看到的雷盘通过数组的遍历打印出来,为了方便查看最好是将行号打印出来
排雷
通过对所选择位置周围一圈的遍历相加得到的周围有几个雷显示在用户的棋盘上
如图所示
判断赢得条件
在总共9*9得雷盘