亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C++ > 正文

C語言 掃雷程序的實現

2020-05-23 13:48:41
字體:
來源:轉載
供稿:網友

C語言 掃雷程序的實現

這個游戲可以實現根據選擇坐標后所顯示無雷區范圍的不同分為簡單 ,普通和困難

游戲程序中,實現了游戲的計時(分鐘)功能,實現了掃雷游戲的最基礎功能。

 定義了一個9*9的棋盤,玩家只要根據提示選擇游戲,和難度;

 根據提示輸入 合法的坐標,如輸入不合法則會進行提示;

 掃雷結束則會提示;如觸雷則游戲自動結束;

整個游戲設計中主要的函數為:

1、初始化地雷棋盤和顯示棋盤

2、棋盤打印函數

3、掃雷函數的實現

4、游戲主函數

大家可以在宏定義中改變棋盤大小,雷的個數,以及顯示的無雷區范圍。

廢話不說 直接上代碼:(未優化,請多包涵 )

<pre name="code" class="objc">#ifndef __MINE_H__ #define __MINE_H__  #define LINES 11     // 棋盤的行 #define ROWS 11     // 棋盤的列 #define mine_MAX 10    // 雷的數目 #define EAXY 3      // 簡單顯示的范圍 #define COMMON 2     // 普通顯示的范圍 #define DIFFICULT 1     // 困難顯示的范圍  enum op {  EXIT,  PLAY }; void game(char mine[LINES][ROWS],char text[LINES][ROWS],int lines,int rows);  //游戲基本實現函數 void init_mine(char mine[LINES][ROWS],char text[LINES][ROWS],int lines,int rows);// 初始化棋盤函數 void play_EAXY_game(char mine[LINES][ROWS],char text[LINES][ROWS]);    // 簡單游戲函數 void play_COMMON_game(char mine[LINES][ROWS],char text[LINES][ROWS]) ;   //普通游戲函數 void play_DIFFICULT_game(char mine[LINES][ROWS],char text[LINES][ROWS]) ;  //困難游戲函數 void mine_EAXY_sweep(char mine[LINES][ROWS],char text[LINES][ROWS]);    //簡單掃雷實現 void mine_COMMON_sweep(char mine[LINES][ROWS],char text[LINES][ROWS]);   //普通掃雷實現 void mine_DIFFICULT_sweep(char mine[LINES][ROWS],char text[LINES][ROWS]) ;  //困難掃雷實現 void print(char tab[LINES][ROWS]); //打印棋盤  #endif 

 

#include<stdio.h> #include"mine.h" #include<stdlib.h> #include<time.h> void init_mine(char mine[LINES][ROWS],char text[LINES][ROWS],int lines,int rows)  //初始化顯示棋盤和雷盤 {  int i;  int j;  int a;  int b;  int count=0;  for(i=1; i<LINES-1;i++)   //初始化顯示棋盤  {   for(j=1; j<ROWS-1;j++)   {    text[i][j]='*';   }  }  for(i=1; i<LINES-1;i++)   //初始化雷盤  {   for(j=1; j<ROWS-1;j++)   {    mine[i][j]='1';   }  }  srand((unsigned)time(NULL)); //隨機產生兩個數  while(count<mine_MAX)  {   a = rand()%9 + 1;   b = rand()%9 + 1;   if(mine[a][b]!='0')   {    mine[a][b]='0';    //定義雷為字符 0    count++;   }  } } void print(char tab[LINES][ROWS])      //打印棋盤函數 {  int i;  //行  int j;  //列   for(i=0;i<LINES-1;i++)  //定義第一行的打印  {   printf("%d ",i);  }  printf("/n");  for(i=1; i<LINES-1;i++)  //輸出棋盤  {   printf("%d",i);   printf("%c",'|');   for(j=1; j<ROWS;j++)   {    printf("%c ",tab[i][j]);   }   printf("/n");  }  } void mine_EAXY_sweep(char mine[LINES][ROWS],char text[LINES][ROWS])    //簡單整個游戲進程 {  int a;  int b;  int count = 0;  // 雷的個數  do     //是否將雷全部掃完  {   int i;   int j;   int x;   int y;   print(text);   print(mine); flag:  printf("請輸入坐標=》");   scanf("%d %d",&a,&b);   if(a>(LINES-2) || a<0 || b<0 || b>(ROWS-2) || text[a][b]!='*')    {     printf("輸入不合法!/n");     goto flag;   }   else  if(mine[a][b]=='0')   //判斷是否觸雷  {   printf("您踩雷了!/n");   break;  }  else  {   for(i=(a-EAXY);i<=(a+EAXY);i++)   {     for(j=(b-EAXY);j<=(b+EAXY);j++)     {      if(mine[i][j]=='1')      {       int x=0;         //周圍雷的數量       if(mine[i-1][j-1]=='0')       {        x++;       }        if(mine[i-1][j]=='0')       {        x++;       }         if(mine[i-1][j+1]=='0')       {        x++;       }         if(mine[i][j-1]=='0')       {        x++;       }         if(mine[i][j+1]=='0')       {        x++;       }         if(mine[i+1][j-1]=='0')       {        x++;       }         if(mine[i+1][j]=='0')       {        x++;       }         if(mine[i+1][j+1]=='0')       {        x++;       }         text[i][j]=(x+'0');      }      }   }  }   for(x=1;x<=(LINES-2);x++)   {    for(y=1;y<=(ROWS-2);y++)    {     if(text[x][y]=='*')      count++;    }   }    }while(count>mine_MAX);  if(count==mine_MAX)  {   printf("恭喜你 掃雷成功!/n");  } } void mine_COMMON_sweep(char mine[LINES][ROWS],char text[LINES][ROWS])    //普通整個游戲進程 {  int a;  int b;  int count;  do     //是否將雷全部掃完  {   int i;   int j;   int x;   int y;    count = 0;  // 雷的個數   print(text);   print(mine); flag:  printf("請輸入坐標=》");   scanf("%d %d",&a,&b);   if(a>(LINES-2) || a<0 || b<0 || b>(ROWS-2) || text[a][b]!='*')    {     printf("輸入不合法!/n");     goto flag;   }   else  if(mine[a][b]=='0')   //判斷是否觸雷  {   printf("您踩雷了!/n");   break;  }  else  {   for(i=(a-COMMON);i<=(a+COMMON);i++)   {     for(j=(b-COMMON);j<=(b+COMMON);j++)     {      if(mine[i][j]=='1')      {       int x=0;         //周圍雷的數量       if(mine[i-1][j-1]=='0')       {        x++;       }        if(mine[i-1][j]=='0')       {        x++;       }         if(mine[i-1][j+1]=='0')       {        x++;       }         if(mine[i][j-1]=='0')       {        x++;       }         if(mine[i][j+1]=='0')       {        x++;       }         if(mine[i+1][j-1]=='0')       {        x++;       }         if(mine[i+1][j]=='0')       {        x++;       }         if(mine[i+1][j+1]=='0')       {        x++;       }         text[i][j]=(x+'0');      }      }   }   print(text);  }   for(x=1;x<=(LINES-2);x++)   {    for(y=1;y<=(ROWS-2);y++)    {     if(text[x][y]=='*')      count++;    }   }    }while(count>mine_MAX);  if(count==mine_MAX)  {   printf("恭喜你 掃雷成功!/n");  } } void mine_DIFFICULT_sweep(char mine[LINES][ROWS],char text[LINES][ROWS])    //困難整個游戲進程 {  int a;  int b;  int count ;  // 雷的個數  do     //是否將雷全部掃完  {   int i;   int j;   int x;   int y;   count = 0;   print(text);   print(mine); flag:  printf("請輸入坐標=》");   scanf("%d %d",&a,&b);   if(a>(LINES-2) || a<0 || b<0 || b>(ROWS-2) || text[a][b]!='*')    {     printf("輸入不合法!/n");     goto flag;   }   else  if(mine[a][b]=='0')   //判斷是否觸雷  {   printf("您踩雷了!/n");   break;  }  else  {   for(i=(a-DIFFICULT);i<=(a+DIFFICULT);i++)   {     for(j=(b-DIFFICULT);j<=(b+DIFFICULT);j++)     {      if(mine[i][j]=='1')      {       int x=0;         //周圍雷的數量       if(mine[i-1][j-1]=='0')       {        x++;       }        if(mine[i-1][j]=='0')       {        x++;       }         if(mine[i-1][j+1]=='0')       {        x++;       }         if(mine[i][j-1]=='0')       {        x++;       }         if(mine[i][j+1]=='0')       {        x++;       }         if(mine[i+1][j-1]=='0')       {        x++;       }         if(mine[i+1][j]=='0')       {        x++;       }         if(mine[i+1][j+1]=='0')       {        x++;       }         text[i][j]=(x+'0');      }      }   }   print(text);  }   for(x=1;x<=(LINES-2);x++)   {    for(y=1;y<=(ROWS-2);y++)    {     if(text[x][y]=='*')      count++;    }   }    }while(count>mine_MAX);  if(count==mine_MAX)  {   printf("恭喜你 掃雷成功!/n");  } } 

 

#include<stdio.h> #include"mine.h" #include<time.h> void emun() {  printf("***********************/n");  printf("******* 1.play ******/n");  printf("******** 0.exit ******/n");  printf("***********************/n"); } void emun_dift()         //選擇難度菜單 {  printf("*********************/n");  printf("****** 1.簡單 *******/n");  printf("****** 2.普通 *******/n");  printf("****** 3.困難 *******/n");  printf("*********************/n"); } void play_EAXY_game(char mine[LINES][ROWS],char text[LINES][ROWS]) //玩簡單游戲 {   time_t t_start,t_end;  printf("計時開始!!/n");  t_start = time(NULL);  //開始計時  mine_EAXY_sweep(mine,text);  t_end = time(NULL);  //計時結束  printf("您所用時間為:%.0f /n",difftime(t_end,t_start)); } void play_COMMON_game(char mine[LINES][ROWS],char text[LINES][ROWS]) //玩普通游戲 {   time_t t_start,t_end;  printf("計時開始!!/n");  t_start = time(NULL);  //開始計時  mine_COMMON_sweep(mine,text);  t_end = time(NULL);  //計時結束  printf("您所用時間為:%.0f /n",difftime(t_end,t_start)); } void play_DIFFICULT_game(char mine[LINES][ROWS],char text[LINES][ROWS]) //玩困難游戲 {   time_t t_start,t_end;  printf("計時開始??!/n");  t_start = time(NULL);  //開始計時  mine_DIFFICULT_sweep(mine,text);  t_end = time(NULL);  //計時結束  printf("您所用時間為:%.0f /n",difftime(t_end,t_start)); } void game() {  int input = 0;  int flout = 0;  char mine[LINES][ROWS]={0};   //定義雷盤  char text[LINES][ROWS]={0};   //定義顯示盤   init_mine(mine,text,LINES,ROWS);      //初始化雷盤   do  {   emun();   init_mine(mine,text,LINES,ROWS);      //初始化雷盤   printf("請選擇=》");    scanf("%d",&input);   switch(input)   {   case PLAY:    {     emun_dift();    printf("請選擇=》");    scanf("%d",&flout);    switch(flout)    {    case 1:     play_EAXY_game(mine,text);     break;    case 2:     play_COMMON_game(mine,text);     break;    case 3:     play_DIFFICULT_game(mine,text);     break;    }    }    break;   case EXIT:    break;   }  }while(input);  } int main() {  game();  return 0; } 

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
色综合天天综合网国产成人网| 国产精品色婷婷视频| 亚洲视频在线观看视频| 亚洲欧美国产精品| 91国产精品电影| 日韩欧美在线免费观看| 亚洲日本成人网| 日韩欧美主播在线| 亚洲精品电影在线观看| 国产欧美一区二区三区在线看| 日韩av在线看| 国产精品高潮呻吟久久av无限| 久久精品国产一区二区电影| 久久久精品国产网站| 国产成人免费av电影| 日韩中文字幕视频| 国产精品啪视频| 欧美主播福利视频| 亚洲综合最新在线| 久久久女女女女999久久| 欧美极品少妇xxxxⅹ裸体艺术| 欧美亚洲另类激情另类| 亚洲四色影视在线观看| 亚洲精品久久久久久久久久久久久| 国产在线精品成人一区二区三区| 精品偷拍一区二区三区在线看| 亚洲精品少妇网址| 国产精品久久电影观看| 亚洲激情电影中文字幕| 欧美精品18videosex性欧美| 欧美老女人性视频| 国产成人精品日本亚洲专区61| 成人黄色激情网| 最近的2019中文字幕免费一页| 午夜精品福利电影| 久久精品一本久久99精品| 国产一区二区在线播放| 亚洲午夜久久久久久久| 久久久久久久电影一区| 日韩在线中文字| 日韩的一区二区| 国产啪精品视频网站| 久久久精品久久久| 91老司机在线| 国产精品久久二区| 国产精品综合不卡av| 久久久久久久久久久av| 久久精品中文字幕一区| 欧美黑人性视频| 成人日韩在线电影| 91精品久久久久久久久久久久久| 78m国产成人精品视频| 亚洲精品美女在线观看播放| 日韩av大片免费看| 国产精品91视频| 97精品国产97久久久久久| 2019最新中文字幕| 国产精品大片wwwwww| 亚洲高清福利视频| 亚洲美女av电影| 欧美日韩一区二区免费视频| 国产成人在线一区| 91成品人片a无限观看| 国产精品流白浆视频| 欧美成人黑人xx视频免费观看| 欧美日韩国产色| 久久久免费观看视频| 日本aⅴ大伊香蕉精品视频| 欧美精品免费看| 国产精品偷伦视频免费观看国产| 日韩不卡在线观看| 欧美激情综合亚洲一二区| 中日韩美女免费视频网站在线观看| 91麻豆国产语对白在线观看| 国产欧美va欧美va香蕉在线| 亚洲第一级黄色片| 日韩av在线网站| 欧美在线中文字幕| 亚洲一区999| 中文字幕日韩在线播放| 国产高清视频一区三区| 91在线国产电影| 上原亚衣av一区二区三区| 国产精品igao视频| 欧美高清自拍一区| 日韩免费av一区二区| 97在线精品国自产拍中文| 九九久久综合网站| 国产69精品久久久久久| 中文字幕亚洲欧美在线| 亚洲最大福利视频网| 国产精品9999| 色婷婷综合久久久久中文字幕1| 91亚洲国产成人久久精品网站| 在线观看不卡av| 粗暴蹂躏中文一区二区三区| 欧美激情日韩图片| 欧美激情一区二区久久久| 国产精品免费久久久久久| 在线精品视频视频中文字幕| 亚洲91精品在线观看| 热久久美女精品天天吊色| 亚洲直播在线一区| 91情侣偷在线精品国产| 少妇高潮久久久久久潘金莲| 一区二区成人av| 欧美成人免费网| 精品国产91久久久久久| 国产香蕉精品视频一区二区三区| 91夜夜揉人人捏人人添红杏| 国产69久久精品成人| 国产视频在线观看一区二区| 欧美国产日韩二区| 91精品国产综合久久久久久蜜臀| 亚洲成avwww人| 中文字幕在线精品| 国产免费亚洲高清| 中文字幕日韩精品有码视频| 亚洲高清久久久久久| 国产成人小视频在线观看| 91欧美日韩一区| 97在线观看视频国产| 午夜精品视频网站| 色爱av美腿丝袜综合粉嫩av| 久久久成人精品| 国产精品激情av电影在线观看| 亚洲精品国产综合久久| 亚洲自拍偷拍视频| 亚洲精品国产综合区久久久久久久| 国产精品扒开腿做爽爽爽的视频| 清纯唯美亚洲综合| 久久色免费在线视频| 久久综合国产精品台湾中文娱乐网| 国产偷国产偷亚洲清高网站| 亚洲欧美国产精品| 国产精品伦子伦免费视频| 成人黄色av免费在线观看| 欧美与欧洲交xxxx免费观看| 久久久久久久一区二区三区| 国产精品91一区| 久久久久一本一区二区青青蜜月| 日韩精品在线视频| 欧美成人免费全部| 国产精品免费久久久久久| 日韩视频一区在线| 亚洲jizzjizz日本少妇| 日日噜噜噜夜夜爽亚洲精品| 97精品在线视频| 成人午夜激情免费视频| 国产成人精品视| 久久精品99久久久香蕉| 日韩欧美国产网站| 欧美亚洲在线视频| 亚洲丝袜在线视频| 成人免费激情视频| 亚洲欧美一区二区精品久久久| 国产福利精品在线| 国模吧一区二区三区| 日韩在线国产精品| 亚洲精品网站在线播放gif| 精品国产一区二区三区四区在线观看| 久久久久久久久国产| 91大神在线播放精品| 欧美精品一区二区三区国产精品|