利用C语言实现一个可展开的扫雷小游戏

  介绍

利用C语言实现一个可展开的扫雷小游戏?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

C语言是什么

C语言是一门面向过程的,抽象化的通用程序设计语言,广泛应用于底层开发,使用C语言可以以简易的方式编译,处理低级存储器。

#一,游戏的思路

先理清游戏大概需要实现的功能,菜单功能的实现,棋盘初始化,打印棋盘,布置雷等。运用两个数组,一个放入布置雷的信息,另一个放入排查雷的信息。选一个坐标扫雷,坐标有雷则游戏结束,没有就计算选中坐标的周围8个格子中雷的总数放入选中的坐标中,若选中的坐标周围8个格子中都没有雷则自动展开。考虑到棋盘边框的情况,实际数组要比打印出的棋盘多两行两列。

<强>行,坳为打印行、列、行、关口为实际的数组行列
EASY_COUNT为雷的个数,可根据需要调整行列和雷的个数

# define  ROW  9   # define  COL  9      # define  ROWS 行+ 2   # define  COLS 坳+ 2      # define  EASY_COUNT  10      # include   # include   # include   # include      void  InitBoard (char 董事会(行)关口,,int 行,,int 关口,,char 集);   void  DisplayBoard (char 董事会(行)关口,,int 行,int 坳);   void  SetMine (char 董事会(行)关口,,int 行,int 坳);   void  FindMine (char 我(行)关口,,char 显示(行)关口,,int 行,int 坳);   void  ExcludeMine (char 我(行)关口,,char 显示(行)关口,,int  x,, int  y);

二、游戏测试

游戏实现的大致思路体现和菜单的实现,代码如下:

# define  _CRT_SECURE_NO_WARNINGS  1      # include" game.h"      void 菜单()   {   ,printf (“# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # \ n");   ,printf(“# # # # # #, 1只play  0. exit  # # # # # # \ n");   ,printf (“# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # \ n");   }//布置雷,安康;字符组存储,安康;雷用1表示,非雷用0表示,安康,最外层一圈放0//排查雷,安康,为避免歧义,再用一个字符组存储排查出来的雷的信息,安康;未排除的用#表示//最外层加一圈字符,只在中间设置雷,并打印展示棋盘中间位置,因此实际存放数组要比打印的棋盘多两行两列   void 游戏()   {   ,//雷的信息存储//1。布置好的雷的信息   ,char 我(行)[关口],=,{,0};//2。排查出的雷的信息   ,char 显示(行)[关口],=,{,0};   ,//初始化   ,InitBoard(行,我还以为,关口,& # 39;0 & # 39;);   ,InitBoard(关口,,,行,,& # 39;# & # 39;);   ,//打印棋盘   ,//DisplayBoard(我的,,行,上校);//测试使用   ,DisplayBoard(显示,,行,上校);   ,//布置雷   ,SetMine(我的,,行,上校);   ,//DisplayBoard(我的,,行,上校);//测试使用   ,//扫雷   ,FindMine(我的,,,,,,上校);   }      void 测试()   {   ,int  input =, 0;   ,将srand ((unsigned  int)时间(NULL));   ,做   ,{   ,菜单();   ,printf(“请选择:在“);   ,scanf (“% d",,,输入);   ,开关(输入)   ,{   ,case  1:   ,游戏();   ,printf(“将返回主菜单\ n");   ,睡眠(5,*,1000);   ,打破;   ,case  0:   ,printf(“退出游戏\ n");   ,打破;   ,默认值:   ,printf(“选择错误,请重新选择\ n");   ,打破;   ,}   ,}while (输入);   }      int  main ()   {   ,测试();   ,return  0;   }

三、游戏流程

存放函数的源文件需要引用头文件

# define  _CRT_SECURE_NO_WARNINGS  1   # include “game.h"

<强> 1。初始化棋盘

void  InitBoard (char 董事会(行)关口,,int 行,,int 关口,,char 集)   {   ,int 小姐:=,0;   ,int  j =, 0;   ,for (小姐:=,0;,小姐:& lt;,行;,我+ +)   ,{   ,for  (j =, 0;, j  & lt;,关口;,j + +)   ,{   ,董事会[我][j],=,设置;   ,}   ,}   }

<强> 2。棋盘打印

void  DisplayBoard (char 董事会(行)关口,,int 行,int 坳)   {   ,int 小姐:=,0;   ,int  j =, 0;   ,//打印列号   ,for (小姐:=,0;,小姐:& lt;=,坳;,我+ +)   ,{   ,printf (“% d “,我);   ,}   ,printf (“\ n");   ,for (小姐:=,1,,小姐:& lt;=,行;,我+ +)   ,{   ,printf (“% d “,我);=,for  (j  1;, j  & lt;=,坳;,j + +)   ,{   ,printf (“% c “,董事会[我][j]);   ,}   ,printf (“\ n");   ,}   }

利用C语言实现一个可展开的扫雷小游戏