C语言代码实现扫雷小游戏分享!

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

主页面:

C语言代码实现扫雷小游戏

游戏页面:

C语言代码实现扫雷小游戏

虽然页面比较low,但我已经尽力了

具体代码实现:

  #include<stdio.h>  #include<windows.h>  #include<conio.h>  #include<stdlib.h>  #include<time.h>  int n;//记录已经探索的区域数  int x,y;//光标的横纵坐标  int T;//判断游戏是否失败,T=1为失败  int b[9][9];//区分每个位置的状态,0为未探索,1为已探索,2为插旗状态  int a[9][9];//随机生成的扫雷地图,-1为雷  void setColor(unsigned short ForeColor=7,unsigned short BackGroundColor=0) {//控制局部区域的字体颜色和背景颜色   HANDLE handle=GetStdHandle(STD_OUTPUT_HANDLE);   SetConsoleTextAttribute(handle,ForeColor+BackGroundColor*0x10);  }  void gotoxy(int x, int y) {   HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);   COORD pos;   pos.X = x;   pos.Y = y;   SetConsoleCursorPosition(handle, pos);  }  void add(int p,int q) {//雷的一周数值+1   for(int i=-1; i<2; i++)   for(int j=-1; j<2; j++)    if(p+i>=0&&p+i<9&&q+j>=0&&q+j<9&&a[p+i][q+j]>=0)    a[p+i][q+j]++;  }  void start() {//初始化函数   srand(time(0));   for(int i=0; i<9; i++)   for(int j=0; j<9; j++) {    a[i][j]=0;    b[i][j]=0;   }   x=0;   y=0;   T=0;   n=10;   while(n) {//由p和q随机数产生10个坐标,生成10个雷   int p,q;   p=rand()%9;   q=rand()%9;   if(!a[p][q]) {    n--;    a[p][q]=-1;    add(p,q);   }   }  }  void show() {//显示图   gotoxy(0,0);   for(int i=0; i<9; i++) {   if(i==0)    printf("┌───┬───┬───┬───┬───┬───┬───┬───┬───┐n");   else    printf("├───┼───┼───┼───┼───┼───┼───┼───┼───┤n");   printf("│");   for(int j=0; j<9; j++) {    printf(" ");    if(!b[i][j]) {    setColor(0,7);    if(i==x&&j==y)     setColor(0,12);    printf(" ");    } else {    if(i==x&&j==y)     setColor(7,4);    if(b[i][j]==-1)     printf("│>");    else if(a[i][j]>=0) {       if(a[i][j])     printf("%2d",a[i][j]);     else     printf(" ");    } else     printf("**");    }    setColor(7,0);    printf("│");   }   printf("n");   if(i==8)    printf("└───┴───┴───┴───┴───┴───┴───┴───┴───┘n");   }   printf("1.探索 2.插旗n");  }  void ss(int x1,int y1) {//探索函数   if(b[x1][y1])   return ;   b[x1][y1]=1;   n++;   if(a[x1][y1]>0)   return;   if(a[x1][y1]<0) {   T=1;   return;   }   for(int i=-1; i<2; i++)   for(int j=-1; j<2; j++)    if(x1+i>=0&&x1+i<9&&y1+j>=0&&y1+j<9)    ss(x1+i,y1+j);  }  void doing() {//游戏进行流程函数   start();   while(n<71) {   show();   int t;   t=_getch();   switch(t) {    case 72: {    if(x)     x--;    break;    }    case 75: {    if(y)     y--;    break;    }    case 77: {    if(y<8)     y++;    break;    }    case 80: {    if(x<8)     x++;    break;    }    case '1': {    if(!b[x][y])     ss(x,y);    break;    }    case '2': {    if(!b[x][y])     b[x][y]=-1;    else if(b[x][y]==-1)     b[x][y]=0;    break;    }   }   if(T) {    for(int i=0; i<9; i++)    for(int j=0; j<9; j++)     b[i][j]=1;    break;   }   }   show();   if(T)   printf("游戏失败!n");   if(!T)   printf("挑战成功!n");   printf("请按'0'键返回主页!n");   int o=1;   while(o!='0'){   o=_getch();   }   }  int main() {   int m=1;   while(m) {   system("cls");   printf("┌───────────┐n");   printf("│  扫雷  │n");   printf("├───────────┤n");   printf("│ 1.开始游戏│n");   printf("├───────────┤n");   printf("│ 2.退出游戏│n");   printf("└───────────┘n");   int t;   t=_getch();   if(t=='1')    doing();   if(t=='2')    break;   }   return 0;  }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持<计算机技术网(www.ctvol.com)!!>。

—-想了解C语言代码实现扫雷小游戏分享!全部内容且更多的C语言教程关注<计算机技术网(www.ctvol.com)!!>

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/c-cdevelopment/483728.html

(0)
上一篇 2020年11月10日
下一篇 2020年11月10日

精彩推荐