C语言实现简易扫雷小游戏

  

我们经常在电脑上面玩的扫雷游戏,很考验我们的判断能力,但是实现一个扫雷游戏并不是很困难,只要多注意一些细节就好,就可以将一个简单的扫雷游戏写出来!

  

接下来先介绍扫雷游戏要实现的功能:

  

首先,要对雷阵进行初始化,在初始化的时候要注意要定义两个数组,一个是让我们扫雷的阵,另外一个就是显示某一个地方的周围的雷的总个数的矩阵,在初始化的时候要注意为了避免传址的问题,我们把它写在主函数里面。

        我char[行][关口];   字符显示(行)(关口);   int i=0;   int j=0;   (我=0;我& lt;行- 1;我+ +)   {   (j=0;j & lt;关口- 1;j + +)   {   我[我][j]=' 0 ';   显示[我][j]=?’;   }   }      

接下来就是电脑在随机布局雷阵的函数,这个函数要用到rand(),,函数,来产生随机值,在雷阵里面随机布雷。

        我空虚set_mine (char(行)[关口])   {   int数=计数;   int x=0;   int y=0;   将srand ((unsigned)时间(NULL));   而(计数)   {   x=rand () % 9 + 1;   y=rand () % 9 + 1;   如果(我的[x] [y]==' 0 ')   {   我[x] [y]=' 1 ';   数,   }   }   }      

再有就是计算雷的个数的函数,要讲某一个坐标位置的周围8个位置的雷的个数算出来,并且将个数显示出来

        我int get_num (char(行)关口,int x, int y)   {   int数=0;   如果(我的[x - 1] [y - 1)==' 1 ')//左上方   {   数+ +;   }   如果(我的[x - 1] [y]==' 1 ')//左边   {   数+ +;   }   如果(我的[x - 1] [y + 1)==' 1 ')//左下方   {   数+ +;   }   如果(我的[x] [y - 1)==' 1 ')//上方   {   数+ +;   }   如果(我的[x] [y + 1)==' 1 ')//下方   {   数+ +;   }   如果(我的[x + 1] [y - 1)==' 1 ')//右上方   {   数+ +;   }   如果(我的[x + 1] [y]==' 1 ')//右方   {   数+ +;   }   如果(我的[x + 1] [y + 1)==' 1 ')//右下方   {   数+ +;   }   返回计数;   }      

将扫雷函数的各个函数都实现了之后,我们来看一下完整的代码

  

头文件game.h 

        #定义_CRT_SECURE_NO_WARNINGS 1   # include   # include   # include   # include   #定义行11   #定义峡路11号   #定义数10      int菜单();//菜单函数   空白显示(char(行)[关口]);   我智力游戏(char(行)关口,字符显示(行)[关口]);//游戏   我空虚set_mine (char(行)[关口]);//设置雷的位置   我int扫描(char(行)关口,字符显示(行)[关口]);//开始扫雷   我int get_num (char(行)关口,int x, int y);//计算雷的个数      

实现函数,game.c

        # include“game.h”//菜单函数   int菜单()   {   printf (" * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \ n”);   printf (" * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \ n”);   printf(" * * * * * * * * * * * * *欢迎来到saolei * * * * * * * * * * * * * \ n”);   printf (" * * * * * * * * * * * * * 1。打* * * * * * * * * * * * * \ n”);   printf (" * * * * * * * * * * * * * 0。出口* * * * * * * * * * * * * \ n”);   printf (" * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \ n”);   printf (" * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \ n”);   返回0;   }//设置雷的位置   我空虚set_mine (char(行)[关口])   {   int数=计数;   int x=0;   int y=0;   将srand ((unsigned)时间(NULL));   而(计数)   {   x=rand () % 9 + 1;   y=rand () % 9 + 1;   如果(我的[x] [y]==' 0 ')   {   我[x] [y]=' 1 ';   数,   }   }   }//打印下棋完了显示的界面   空白显示(char(行)[关口])   {   int i=0;   int j=0;   printf (" ");   (i=1;我& lt;关口- 1;我+ +)   {   printf (" % d”,我);   }   printf (" \ n ");   (i=1;我& lt;行- 1;我+ +)   {   printf (" % d”,我);   (j=1;j & lt;关口- 1;j + +)   {   printf (" % c”,[我][j]);   }   printf (" \ n ");   }   }//计算雷的个数   我int get_num (char(行)关口,int x, int y)   {   int数=0;   如果(我的[x - 1] [y - 1)==' 1 ')//左上方   {   数+ +;   }   如果(我的[x - 1] [y]==' 1 ')//左边   {   数+ +;   }   如果(我的[x - 1] [y + 1)==' 1 ')//左下方   {   数+ +;   }   如果(我的[x] [y - 1)==' 1 ')//上方   {   数+ +;   }   如果(我的[x] [y + 1)==' 1 ')//下方   {   数+ +;   }   如果(我的[x + 1] [y - 1)==' 1 ')//右上方   {   数+ +;   }   如果(我的[x + 1] [y]==' 1 ')//右方   {   数+ +;   }   如果(我的[x + 1] [y + 1)==' 1 ')//右下方   {   数+ +;   }   返回计数;   }//扫雷   我int扫描(char(行)关口,字符显示(行)[关口])   {   int数=0;   int x=0;   int y=0;   而(计数!=((行2)* (cols-2)计数))   {   printf(“请输入坐标:\ n”);   scanf (“% d % d”, x,, y);   如果(我的[x] [y]==' 1 ')   {   printf("你踩到雷了! \ n”);   返回0;   }   其他的   {   int ret=get_num(我的,x, y);   显示[x] [y]=ret + ' 0 ';//set_mine(我);   显示(显示);   数+ +;   }   }   printf("恭喜你赢了! \ n”);   显示(我);   返回0;   }//游戏   我智力游戏(char(行)关口,字符显示(行)[关口])   {   set_mine(我);   显示(显示);//显示(矿);//可以将雷的位置显示出来   扫描(矿山、显示);   返回0;   }

C语言实现简易扫雷小游戏