温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

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

发布时间:2021-05-27 14:25:32 来源:亿速云 阅读:181 作者:小新 栏目:编程语言

这篇文章主要介绍了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;
}

感谢你能够认真阅读完这篇文章,希望小编分享的“C语言代码如何实现扫雷小游戏”这篇文章对大家有帮助,同时也希望大家多多支持亿速云,关注亿速云行业资讯频道,更多相关知识等着你来学习!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI