直接上代码
//文字介绍在后半部分前半部分为代码voidmenu() { printf("\n"); printf("*************************\n"); printf("*************************\n"); printf("********扫******雷*******\n"); printf("*************************\n"); printf("********1.开始游戏*******\n"); printf("*************************\n"); printf("********2.退出游戏*******\n"); printf("*************************\n"); printf("*************************\n"); }
//自己做的函数头文件voidgame() { chara[HANGS][LIES]; charb[HANGS][LIES]; //初始化棋盘Init(a, HANGS, LIES, '0');//0Init(b, HANGS, LIES, '*');//*//打印棋盘Display(b, HANG, LIE); //布置雷Plant(a, HANG, LIE); //检查雷check(a, b, HANG, LIE); } intmain() { srand((unsignedint)time(NULL)); intn; do { menu(); scanf("%d", &n); system("cls"); switch (n) { case1: game(); break; case2: printf("游戏结束!\n感谢您的游玩\n"); break; default: printf("输出错误\n"); break; } } while (n!=2); return0; }
voidInit(chararr[HANG][LIE], inthangs, intlies, charset);//加s因为不能一样voidDisplay(b, hang, lie); voidmenu(); voidPlant(chararr[HANGS][LIES], inthang, intlie); voidcheck(chara[HANG][LIE], charb[HANG][LIE], inthang, intlie);
voidInit(chararr[HANG][LIE],inthangs,intlies,charset) {//初始化棋盘inti,j; for (i=0; i<hangs; i++) { for (j=0; j<lies; j++) { arr[i] [j] =set; } } } voidDisplay(chararr[HANG][LIE], inthang, intlie) {//打印棋盘inti, j; printf("* * * * * * * * * * \n"); for(i=0;i<=hang;i++){ printf("%d ", i); } printf("\n"); for (i=1; i<=hang; i++) { printf("%d ", i); for (j=1; j<=lie; j++) { printf("%c ", arr[i][j]); } printf("\n"); } printf("* * * * * * * * * * \n"); } voidPlant(chararr[HANGS][LIES],inthang,intlie) {//布置雷intcount=difficulty;//雷总量while (count) {//设置雷坐标intx=rand() %hang+1; inty=rand() %lie+1; if (arr[x][y] =='0') {//判断是否已经有了雷arr[x][y] ='1'; count--;//减少一颗雷数量(因为放置了一颗) } } } staticintget(charb[HANG][LIE],intx,inty) {//用来辅助展示周边雷的数字returnb[x-1][y] +b[x-1][y-1] +b[x-1][y+1] +b[x][y-1] +b[x][y+1] +b[x+1][y-0] +b[x+1][y] +b[x+1][y+1] -8*'0'; } voidcheck(chara[HANG][LIE], charb[HANG][LIE], inthang, intlie) {//排查雷intx=0; inty=0; intwin=0; while (win<hang*lie-difficulty) { printf("请输入要排查的坐标:\n"); scanf_s("%d %d", &x, &y); system("cls"); if (x>=1&&x<=hang&&y>=1&&y<=lie) { if (a[x][y] =='1') { printf("你被炸死了"); Display(b, hang, lie); system("pause"); system("cls"); break; } else { intn=get(a, x, y); b[x][y] =n+'0'; Display(b, HANG, LIE);//展示周围几个雷win++; } } else { printf("非法坐标,重新输入"); } if (win==hang*lie-difficulty) { printf("游戏胜利!!!"); Display(b, hang, lie); } } }
创建一个工程 包含四个文件 其中三个.c文件 一个.h头文件
源.c----main函数在这里
zhege.h-----编写的头文件 内部包含函数的生命
menu.c ---- 打印菜单
game.c-----存放各种函数
大致思路——————
1.数组存放数据
2.数组存放%c类型 存放字符便于实现扫雷过程
3.需要两个数组 一个展示外观 一个更改内部数据存放雷
4.编写函数 初始化、展示、存放、查找
5.实现代码
6.调试环节