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

  

本文实例为大家分享了C语言实现扫雷小游戏的具体代码,供大家参考,具体内容如下

        #定义_CRT_SECURE_NO_WARNINGS   # include & lt; stdio.h>   # include & lt; windows.h>   # include & lt; time.h>/*   用C语言写一个简单的扫雷游戏   *///1。写一个游戏菜单菜单()//2 .开始游戏//1。初始化二维数组Init_Interface ()//2。打印游戏界面Print_Interface ()//3。玩家掀起指定位置玩()——比;指定输入坐标(判断合法性)//1 .判断该位置是否是雷//2 .判断是否掀掉所有空地//3。如果掀开的是空地,则判断该空地周围是否有雷//1。如果周围有雷,则统计周围雷的个数//2。如果周围没有雷,则掀开周围除了雷的所有空地,并且统计所掀开空地周围雷的个数//4 .更新地图//5。继续3的循环//定义全局变量://定义扫雷地图的长和宽   #定义MAX_ROW 9   #定义MAX_COL 9//定义默认的雷数   #定义DEFAULT_MINE 9//定义两个二维数组,分别存放初始地图和雷阵   char show_map [MAX_ROW + 2] [MAX_COL + 2];   char mine_map [MAX_ROW + 2] [MAX_COL + 2];//写一个游戏菜单   int菜单(){   printf ("=========\ n ");   printf(" 1。开始游戏\ n”);   printf(" 0。结束游戏\ n”);   printf ("=========\ n ");   printf("请选择游戏菜单选项:”);   int选择=0;   而(1){   scanf (“% d”,和选择);   如果选择!=0,,选择!=1){   printf("您的输入有误,请重新输入\ n”);   继续;   }   打破;   }   返回选择;   }//开始游戏//初始化数组   空白Init_Interface () {   for (int行=0;行& lt;MAX_ROW + 2;行+ +){   for (int坳=0;坳& lt;MAX_COL + 2;坳+ +){   show_map(行)(col)=?’;   }   }   for (int行=0;行& lt;MAX_ROW + 2;行+ +){   for (int坳=0;坳& lt;MAX_COL + 2;坳+ +){   mine_map(行)(col)=' 0 ';   }   }   int mine_count=DEFAULT_MINE;   而(mine_count比;0){   int行=rand () % MAX_ROW + 1;   int坳=rand () % MAX_COL + 1;   如果(mine_map(行)(col)==' 1 '){//将雷设置为1//此处已经有雷   继续;   }   mine_count——;   mine_map(行)(col)=' 1 ';   }   }//打印初始界面   空白Print_Interface (char地图[MAX_ROW + 2] [MAX_COL + 2]) {   printf (" ");   for (int坳=1;坳& lt;=MAX_COL;坳+ +){   printf (" % d”,上校);   }   printf (" \ n ");   for (int坳=1;坳& lt;=MAX_COL;坳+ +){   printf ("——");   }   printf (" \ n ");   for (int行=1;行& lt;=MAX_ROW;行+ +){   printf (" % 2 d |”,行);   for (int坳=1;坳& lt;=MAX_COL;坳+ +){   printf (" % c”,地图(行)(col));   }   printf (" \ n ");   }   }//写一个统计周围雷数个数的函数   int Around_Mine_count (int, int坳){   返回(mine_map[行- 1][col - 1], ' 0 '   + mine_map[行- 1](col)——“0”   + mine_map[行- 1][坳+ 1],' 0 '   (col - 1) + mine_map(行),' 0 '   + mine_map[行][坳+ 1],' 0 '   + mine_map[行+ 1][col - 1], ' 0 '   + mine_map[行+ 1](col)——“0”   + mine_map[行+ 1][坳+ 1],' 0 ');   }//写一个判断该位置周围是否有雷的函数   int No_Mine (int, int坳){   如果(Around_Mine_count(行,坳)==0){   返回1;   }   返回0;   }//写一个掀开该位置周围空地的函数   空白Open_Blank (int, int坳){   show_map[行- 1][col - 1)=' 0 ' + Around_Mine_count(行- 1,- 1)上校;   show_map[行- 1](col)=' 0 ' + Around_Mine_count(行- 1,坳);   show_map[行- 1][坳+ 1)=' 0 ' + Around_Mine_count(行- 1,+ 1)上校;   show_map(行)(col - 1)=' 0 ' + Around_Mine_count(行,col - 1);   show_map(行)(col + 1)=' 0 ' + Around_Mine_count(行,坳+ 1);   show_map[行+ 1][col - 1)=' 0 ' + Around_Mine_count(行+ 1,- 1)上校;   show_map[行+ 1](col)=' 0 ' + Around_Mine_count(+ 1行,坳);   show_map[行+ 1][坳+ 1)=' 0 ' + Around_Mine_count(行+ 1,+ 1)上校;   }//写一个判断游戏结束的函数   int Success_Sweep (char show_map [MAX_ROW + 2] [MAX_COL + 2]) {   int数=0;   for (int行=1;行& lt;=MAX_ROW;行+ +){   for (int坳=1;坳& lt;=MAX_COL;坳+ +){   如果(show_map(行)(col)==?’) {   数+ +;   }   }   }   如果(count==DEFAULT_MINE) {   返回1;   }   返回0;   }//开始游戏   空白StartGame () {   而(1){   printf(“请输入您要掀开的坐标:”);   int行=0;   int坳=0;   而(1){   scanf (“% d % d”,,行,和坳);   如果行& lt;1 | |行比;MAX_ROW | |坳& lt;1 | |坳祝辞MAX_COL) {   printf("您的输入有误,请重新输入! \ n”);   继续;   }   如果(show_map(行)(col) !=?’) {   printf("该位置已被掀开,请重新选择\ n”);   继续;   }   打破;   }//判断该地方是否有雷   如果(mine_map(行)(col)==' 1 ') {   Print_Interface (mine_map);   printf("该地方有雷,游戏结束! ! ! \ n”);   打破;   }   如果(No_Mine(行,上校)){   show_map(行)(col)=' 0 ';   Open_Blank(行,坳);   }   show_map(行)(col)=' 0 ' + Around_Mine_count(行,坳);//判断是否掀开所有空地   如果(Success_Sweep (show_map)==1) {   Print_Interface (mine_map);   printf("您已成功扫雷! ! ! \ n”);   打破;   }   系统(cls);//更新地图   Print_Interface (show_map);   }   }      int main () {   如果(菜单()==0){   退出(0);   }   将srand ((unsigned int)时间(NULL));   Init_Interface ();   Print_Interface (show_map);   StartGame ();      系统(“暂停”);   返回0;   }

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