怎么用c++代码实现扫雷小游戏
这篇文章主要介绍了怎么用c++代码实现扫雷小游戏的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么用c++代码实现扫雷小游戏文章都会有所收获,下面我们一起来看看吧。
分成两个源文件和一个头文件
注意:这串代码并不完整,不能够实现当所查坐标周围雷的数量为0时,直接展开周围坐标;
头文件:game.h
#include<stdio.h>#definecount10//雷的数量//定义行-ROW,列-COL#defineROW9#defineCOL9#defineROWSROW+2//多加一些,方便代码#defineCOLSCOL+2//初始化棋盘,声明的函数均在game.c中实现voidInitBoard(charboard[ROWS][COLS],introws,intcols);//打印棋盘voidDisplayBoard(charboard[ROW][COL],introw.intcol);//布置雷voidSetMine(charboard[ROW][COLS],introw,intcol);//找雷voidFindMine(charmine[][COLS],charshow[][COLS],introw,intcol);
第一个源文件:saolei.c
#include"game.h"//需要包含和声明的东西在game.h中完成voidmenu(){printf("\n");printf("1.play\n");printf("0.exit\n");printf("\n");}voidgame(){//ROWandCOL在game.h中定义charmine[ROWS][COLS];//地雷埋藏的棋盘charshow[ROWS][COLS];//展示出的棋盘//初始化棋盘//game()中的函数在game.h中声明,在game.c中实现InitBoard(mine,ROWS,COLS,'0');//0代表无雷,1代表有雷InitBOard(show,ROWS,COLS,'*');//打印棋盘DisplayBoard(show,ROW,COL);//布置雷SetMine(mine,ROW,COL);//找雷FindMine(mine,show,ROW,COL);}intmain(){srand((unsignedint)time(NULL));//生成随机数intinput=0;do//do-while循环{menu();//(1--play0--exit)也是do-while循环的条件printf("请选择:");scanf("%d",&input);switch(input){case1:printf("开始游戏\n");game();break;case0:printf("退出游戏");break;default:printf("选择错误,请重新输入");break;}}while(input)return0;}
第二个源文件:game.c
#include"game.h"voidInitBoard(charboard[ROWS][COLS],introws,intcols,charset){inti=0;intj=0;for(i=0;i<rows;i++){for(j=0;j<cols;j++){board[i][j]=set;}}}voidDisplayBoard(charboard[ROWS][COLS],introw,intcol){inti=0;intj=0;for(i=0;i<=row;i++){printf("%d",i);}printf("\n");for(i=1;i<=row;i++){printf("%d"i)for(j=1;j<=col;j++){printf("%c",board[i][j]);}printf("\n");}}voidSetMine(charboard[ROW][COL],introw,intcol){intx=0;inty=0;while(count)//count-雷的数量{x=rand()%row+1;//因为在1-row中布置雷,边缘一排不用,最后为了记录y=rand()%col+1;//周围雷的数量方便,同时代码方便if(board[x][y]=='0'){board[x][y]='1';count--;}}}//算出周围雷的个数intget_mine_count(mine[ROWS][COLS],introw,intcol){inti=0;intj=0;intmine_count=0;for(i=-1;i<=1;i++){for(j=-1;j<=1;j++){if(mine[i][j]=='1'){mine_count++;}}}returnmine_count;}voidFindMine(charmine[][COLS],charshow[][COLS],introw,intcol){intx=0;inty=0;intret=0;//已经查找过的位置的数量while(ret<row*col-count)//当还剩下count的数量时,赢得游戏{printf("请输入查找位置下标:");scanf("%d%d",&x,&y);if(x>=1&&x<=row&&y>=1&&y<=col){if(mine[x][y]=='0'){//当所查坐标的位置不是雷时,将该坐标展示成周围雷的个数intc=get_mine_count(mine,ROW,COL);mine[x][y]=c+'0';//返回值为int型,数组为char型,因此+'0'ret++;DisplayBoard(show,ROW,COL);}else{printf("YOULOSE\n");break;}}else{printf("输入非法,请重新输入\n");}}printf("VICTORY\n");//获得胜利}
关于“怎么用c++代码实现扫雷小游戏”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“怎么用c++代码实现扫雷小游戏”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注亿速云行业资讯频道。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。