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

首頁 > 編程 > C > 正文

C語言 掃雷程序的實現

2020-01-26 14:13:19
字體:
來源:轉載
供稿:網友

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
中文字幕不卡在线视频极品| 日韩黄色高清视频| 欧美午夜无遮挡| 日本高清视频一区| 久久综合电影一区| 国产伦精品免费视频| 成人福利网站在线观看| 欧美视频在线看| 欧美日韩色婷婷| 国产国产精品人在线视| 国产一区二区三区在线免费观看| 国产一区二区成人| 日韩精品视频中文在线观看| 懂色av中文一区二区三区天美| 欧美xxxx18国产| 国产精品香蕉在线观看| 在线精品视频视频中文字幕| 亚洲无限av看| 亚洲精品国产精品自产a区红杏吧| 亚洲美女精品久久| 成人福利免费观看| 91成人天堂久久成人| 亚洲精品久久久久久下一站| 成人a级免费视频| 久久99精品视频一区97| 色系列之999| 亚洲国产日韩精品在线| 亚洲国产私拍精品国模在线观看| 亚洲黄色在线看| 久久久久久免费精品| 啊v视频在线一区二区三区| 精品国内自产拍在线观看| 亚洲成人在线网| 日韩欧美国产一区二区| 久久久免费在线观看| 欧美猛交免费看| 日韩精品视频在线| 最近中文字幕日韩精品| 欧美日本高清视频| 国产精品专区一| 日韩精品久久久久久久玫瑰园| 欧美高清视频免费观看| 国内精久久久久久久久久人| 国产精品自拍偷拍视频| 日韩在线观看视频免费| 欧美高清一级大片| 亚洲精品视频久久| 91精品国产高清久久久久久久久| 久久精品在线播放| 精品美女久久久久久免费| 精品国产户外野外| 亚洲一区二区三区乱码aⅴ蜜桃女| 久久亚洲一区二区三区四区五区高| 国产成人精品在线视频| 精品香蕉一区二区三区| 九九久久久久99精品| 亚洲a级在线播放观看| 亚洲精品v欧美精品v日韩精品| 国产精品色视频| 国产欧美在线视频| 欧美丝袜美女中出在线| 久久久av免费| 欧美激情手机在线视频| 国产精品18久久久久久麻辣| 国产91免费观看| 91国内揄拍国内精品对白| 热久久99这里有精品| 成人黄色av免费在线观看| 日本19禁啪啪免费观看www| 911国产网站尤物在线观看| 亚洲v日韩v综合v精品v| 国产精品久久久久久久久久小说| 成人中文字幕+乱码+中文字幕| 亚洲成人在线视频播放| 国产91热爆ts人妖在线| 亚洲人成免费电影| 欧美专区在线视频| 亚洲风情亚aⅴ在线发布| 96国产粉嫩美女| 亚洲美女在线视频| 日韩中文字幕免费视频| 日本电影亚洲天堂| www.亚洲一二| 久久艹在线视频| 欧美黑人性生活视频| 亚洲xxxx妇黄裸体| 久久人91精品久久久久久不卡| 久久成年人免费电影| 免费91在线视频| 亚洲欧美成人一区二区在线电影| 国产91精品久久久久久| 欧美激情视频网| 日韩欧美国产骚| 亚洲成人av片在线观看| 国产69久久精品成人看| 国产va免费精品高清在线观看| 人人做人人澡人人爽欧美| 国产成人精品久久二区二区91| 日本视频久久久| 91精品国产自产在线观看永久| 亚洲最大福利网| 精品久久久香蕉免费精品视频| 欧美俄罗斯性视频| 91亚洲一区精品| 亚洲深夜福利视频| 日韩视频免费大全中文字幕| 日韩av在线看| 91夜夜未满十八勿入爽爽影院| 亚洲一区二区三区视频播放| 97人人模人人爽人人喊中文字| 中文字幕亚洲国产| 成人免费淫片视频软件| 成人做爽爽免费视频| 伊人久久精品视频| 日韩在线观看免费全集电视剧网站| 日韩专区在线播放| 精品久久久在线观看| 久久久91精品国产| 日韩在线观看免费高清完整版| 欧美亚洲成人xxx| 欧美黑人一级爽快片淫片高清| 国产一区二区三区视频免费| 中文字幕日韩在线播放| 国产精品2018| 日本精品一区二区三区在线播放视频| 国产手机视频精品| 91丝袜美腿美女视频网站| 久久免费国产视频| 亚洲欧美成人网| 亚洲精品在线91| 久久久国产精品视频| 亚洲一区亚洲二区| 成人欧美一区二区三区在线湿哒哒| 欧美电影第一页| 欧美电影免费在线观看| 欧美黑人国产人伦爽爽爽| 亚洲天堂影视av| 国产精品日韩在线| www.久久久久| 精品一区电影国产| 69av在线播放| 色偷偷91综合久久噜噜| 萌白酱国产一区二区| 狠狠躁天天躁日日躁欧美| 成人中心免费视频| 国产成人欧美在线观看| 91精品中文在线| 久久久精品中文字幕| 欧美精品在线免费观看| 97精品国产91久久久久久| 国产男女猛烈无遮挡91| 国产视频在线一区二区| 26uuu日韩精品一区二区| 久久久伊人欧美| 欧美大片欧美激情性色a∨久久| 国产精品国产三级国产aⅴ浪潮| 日本国产高清不卡| 免费不卡欧美自拍视频| 热99精品只有里视频精品| 欧美激情在线狂野欧美精品| 黄色一区二区在线观看| 亚洲第一二三四五区| 亚洲视频在线视频| 伊人成人开心激情综合网|