本文实例为大家分享了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语言实现简单扫雷小游戏