真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

C語(yǔ)言實(shí)現(xiàn)掃雷小游戲?qū)嵗榻B-創(chuàng)新互聯(lián)

這篇文章主要介紹“C語(yǔ)言實(shí)現(xiàn)掃雷小游戲?qū)嵗榻B”,在日常操作中,相信很多人在C語(yǔ)言實(shí)現(xiàn)掃雷小游戲?qū)嵗榻B問(wèn)題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”C語(yǔ)言實(shí)現(xiàn)掃雷小游戲?qū)嵗榻B”的疑惑有所幫助!接下來(lái),請(qǐng)跟著小編一起來(lái)學(xué)習(xí)吧!

成都創(chuàng)新互聯(lián)公司憑借專業(yè)的設(shè)計(jì)團(tuán)隊(duì)扎實(shí)的技術(shù)支持、優(yōu)質(zhì)高效的服務(wù)意識(shí)和豐厚的資源優(yōu)勢(shì),提供專業(yè)的網(wǎng)站策劃、成都網(wǎng)站建設(shè)、成都做網(wǎng)站、網(wǎng)站優(yōu)化、軟件開(kāi)發(fā)、網(wǎng)站改版等服務(wù),在成都十余年的網(wǎng)站建設(shè)設(shè)計(jì)經(jīng)驗(yàn),為成都超過(guò)千家中小型企業(yè)策劃設(shè)計(jì)了網(wǎng)站。

游戲簡(jiǎn)介

掃雷,是一款益智類小游戲。 游戲目標(biāo)是找出所有沒(méi)有地雷的方格,完成游戲;要是按了有地雷的方格,游戲失敗;玩家可標(biāo)記雷的位置。游戲以完成時(shí)間來(lái)評(píng)高低。有不同的游戲難度可選擇。

實(shí)現(xiàn)的功能介紹

1.計(jì)時(shí) 2.初始化雷盤 3.打印雷盤 4.隨機(jī)設(shè)置雷的分布,可選擇游戲難易程度 5.統(tǒng)計(jì)坐標(biāo)位置周圍的雷數(shù) 6.第一次排雷不會(huì)被炸死 7.擴(kuò)展式排雷,展開(kāi)周圍的非雷區(qū) 8.給所選坐標(biāo)位置做標(biāo)記,或取消標(biāo)記

該程序分為三個(gè)文件:

1.game.h :包含頭文件的引用、函數(shù)的聲明和宏定義 2.game.c :包含游戲各功能函數(shù)的具體實(shí)現(xiàn) 3.pro.c :各功能函數(shù)的調(diào)用(程序的流程) PS:文章末尾附完整代碼 及 游戲效果圖

因?yàn)榕爬讜r(shí)要計(jì)算每個(gè)位置周圍八個(gè)位置的雷數(shù),所以在創(chuàng)建數(shù)組時(shí)要多一圈,即行列都要加2。給用戶顯示的數(shù)組不需要加。

游戲功能代碼詳解

1.計(jì)時(shí)

運(yùn)用clock函數(shù),該函數(shù)需要的頭文件為 “time.h” 函數(shù)原型:clock_t clock(void); 功能:程序從啟動(dòng)到函數(shù)調(diào)用占用CPU的時(shí)間 這個(gè)函數(shù)返回從“開(kāi)啟這個(gè)程序進(jìn)程”到“程序中調(diào)用clock()函數(shù)”時(shí)之間的CPU時(shí)鐘計(jì)時(shí)單元(clock tick)數(shù),在MSDN中稱之為掛鐘時(shí)間;若掛鐘時(shí)間不可取,則返回-1。其中clock_t是用來(lái)保存時(shí)間的數(shù)據(jù)類型。

void set_time()//計(jì)時(shí){  printf("用時(shí):%u 秒\n", clock() / CLOCKS_PER_SEC);}

2.初始化雷盤 這里我用到的是memset函數(shù),需要的頭文件為“memory.h”或“string.h” 函數(shù)原型:void *memset(void *s, int ch, size_t n); 功能:將s中當(dāng)前位置后面的n個(gè)字節(jié) (typedef unsigned int size_t )用 ch 替換并返回 s 。在一段內(nèi)存塊中填充某個(gè)給定的值。

void init_board(char board[ROWS][COLS], int row, int col, char c)//初始化雷盤{  memset(board, c, row*col*sizeof(board[0][0]));}

3.打印雷盤 運(yùn)用兩個(gè)循環(huán)體實(shí)現(xiàn)雷盤數(shù)組的賦值、行號(hào)、列號(hào)的打印。正式游戲時(shí)可以加上system(“CLS”); 清屏語(yǔ)句,每次調(diào)用時(shí)都清屏一次,使游戲畫面更簡(jiǎn)潔清晰。 我們把計(jì)時(shí)函數(shù)放在里面,每次打印雷盤時(shí)就可以顯示所用的時(shí)間。

void disp_board(char board[ROWS][COLS], int row, int col)//打印雷盤{  int i = 0;  int j = 0;  //system("CLS");//清屏  for (i = 0; i <= row; i++)  {    printf("%2d ", i);//打印行號(hào)  }  printf("\n");  for (i = 1; i <= row; i++)  {    printf("%2d ", i);//打印列號(hào)    for (j = 1; j <= col; j++)    {      printf("%2c ", board[i][j]);    }    printf("\n");  }  printf("\n");  set_time();//打印所用的時(shí)間}

4.隨機(jī)設(shè)置雷的分布,可選擇游戲難易程度 放置雷必須是隨機(jī)的,這里用到了rand函數(shù),它和srand函數(shù)配合使用產(chǎn)生隨機(jī)數(shù)。srand(time(NULL))放在主函數(shù)中調(diào)用一次,通過(guò)系統(tǒng)時(shí)間提供的種子值,使rand函數(shù)生成不同的偽隨機(jī)數(shù)序列。

void set_mine(char board[ROWS][COLS], int row, int col,int count)//置雷{  int x = 0;  int y = 0;   while (count)  {    x = rand() % row + 1;//隨機(jī)位置范圍1~row    y = rand() % col + 1;//隨機(jī)位置范圍1~col    if (board[x][y] == '0')//判斷是否已有雷    {      board[x][y] = '1';//有雷的位置賦為1      count--;    }  }}

5.統(tǒng)計(jì)坐標(biāo)位置周圍的雷數(shù) 及 未掃的位置的個(gè)數(shù) 當(dāng)掃到一個(gè)沒(méi)有雷的位置時(shí),會(huì)顯示這個(gè)位置周圍一圈八個(gè)位置的含雷的總數(shù),所以我們要寫一個(gè)“數(shù)雷”函數(shù)來(lái)數(shù)。

int count_mine(char mine[ROWS][COLS], int x, int y)//數(shù)雷{  return mine[x - 1][y] + mine[x - 1][y + 1] + mine[x][y + 1] + mine[x + 1][y + 1] + mine[x + 1][y] +    mine[x + 1][y - 1] + mine[x][y - 1] + mine[x - 1][y - 1] - 8 * '0';//數(shù)周圍一圈八個(gè)位置的雷數(shù)}int count_print(char print[ROWS][COLS], int row, int col)//數(shù)未掃位置{  int count = 0;  int i = 0;  for (i = 1; i <= row; i++)  {    int j = 0;    for (j = 1; j <= col; j++)    {      if (print[i][j] == '@' ||print[i][j] == '*')      {        count++;      }    }  }  return count;}

6.第一次排雷不會(huì)被炸死 為了增加游戲的可玩性,加入“第一次排雷不被炸死”這個(gè)函數(shù)。當(dāng)?shù)谝淮闻啪陀龅嚼讜r(shí),我們把雷偷偷挪走,隨機(jī)放在一個(gè)原本無(wú)雷的位置。

void safe_mine(char mine[ROWS][COLS],char print[ROWS][COLS],int x,int y,int row,int col)//第一次排雷不炸死{  char ch = 0;  int ret = 1;  int number = 0;  if (mine[x][y] == '1')//第一次踩到雷后補(bǔ)救  {    mine[x][y] = '0';    char ch = count_mine(mine, x, y);    print[x][y] = ch + '0';//數(shù)字對(duì)應(yīng)的ASCII值和數(shù)字字符對(duì)應(yīng)的ASCII值相差48,即'0'的ASCII值    extend_board(mine, print, x, y);    while (ret)//在其余有空的地方設(shè)置一個(gè)雷    {      int x = rand() % row + 1;//產(chǎn)生1到row的隨機(jī)數(shù),在數(shù)組下標(biāo)為1到10的范圍內(nèi)布雷      int y = rand() % col + 1;//產(chǎn)生1到col的隨機(jī)數(shù),在數(shù)組下標(biāo)為1到10的范圍內(nèi)布雷      if (mine[x][y] == '0')//找不是雷的地方布雷      {        mine[x][y] = '1';        disp_board(print, row, col);        //disp_board(mine, row, col);        ret--;        break;      }    }  }}

7.擴(kuò)展式排雷,展開(kāi)周圍的非雷區(qū) 當(dāng)游戲中排到一個(gè)周圍一圈都無(wú)雷的位置時(shí),運(yùn)用遞歸,實(shí)現(xiàn)擴(kuò)展展開(kāi)周圍的一片無(wú)雷區(qū)。

void extend_board(char mine[ROWS][COLS], char print[ROWS][COLS], int x, int y)//運(yùn)用遞歸擴(kuò)展周圍{     int n = 0;  n = count_mine(mine, x, y);   if (n == 0)//當(dāng)該位置周圍雷數(shù)為0時(shí)擴(kuò)展  {    print[x][y] = ' ';//擴(kuò)展的位置變?yōu)椤翱崭瘛贝蛴〕鰜?lái)    if (mine[x - 1][y] == '0' && print[x - 1][y] == '@')    {      extend_board(mine, print, x - 1, y);//遞歸    }    if (mine[x + 1][y] == '0' && print[x + 1][y] == '@')    {      extend_board(mine, print, x + 1, y);    }    if (mine[x][y + 1] == '0' && print[x][y + 1] == '@')    {      extend_board(mine, print, x, y + 1);    }    if (mine[x - 1][y + 1] == '0' && print[x - 1][y + 1] == '@')    {      extend_board(mine, print, x - 1, y + 1);    }    if (mine[x + 1][y + 1] == '0' && print[x + 1][y + 1] == '@')    {      extend_board(mine, print, x + 1, y + 1);    }    if (mine[x][y - 1] == '0' && print[x][y - 1] == '@')    {      extend_board(mine, print, x, y - 1);    }    if (mine[x + 1][y - 1] == '0' && print[x + 1][y -1] == '@')    {      extend_board(mine, print, x + 1, y - 1);    }    if (mine[x - 1][y - 1] == '0' && print[x - 1][y - 1] == '@')    {      extend_board(mine, print, x - 1, y - 1);    }  }  else      print[x][y] = n + '0'; } int find_mine(char mine[ROWS][COLS], char print[ROWS][COLS], int row, int col,int count)//排雷{  int x = 0;  int y = 0;  int number = 0;  int ret = 0;  while (1)  {    printf("輸入坐標(biāo)掃雷\n");    scanf("%d%d", &x, &y);//玩家輸入掃雷的坐標(biāo)位置    if ((x >= 1 && x <= row) && (y >= 1 && y <= col))//判斷輸入坐標(biāo)是否有誤,輸入錯(cuò)誤重新輸入    {      if (mine[x][y] == '0')//沒(méi)踩到雷      {        number++;//記錄掃雷的次數(shù)        char ch = count_mine(mine, x, y);//數(shù)雷數(shù)        print[x][y] = ch + '0';//數(shù)字對(duì)應(yīng)的ASCII值和數(shù)字字符對(duì)應(yīng)的ASCII值相差48,即'0'的ASCII值        extend_board(mine, print, x, y);        disp_board(mine, row, col);        disp_board(print, row, col);        if (count_print(print, row, col) == count)//剩余未掃位置=雷數(shù) 時(shí)勝利        {          return 0;        }        to_sign(print);//判斷是否標(biāo)記        disp_board(print, row, col);      }      else if (mine[x][y] == '1')//踩到雷      {        if (ret == 0 && number == 0)        {          ret++;          safe_mine(mine,print,x,y,row,col);        }        else          return 1;      }    }    else    {      printf("輸入錯(cuò)誤!請(qǐng)重新輸入\n");    }  }}

8.給所選坐標(biāo)位置做標(biāo)記,或取消標(biāo)記 掃雷游戲還有一個(gè)功能:可以給你認(rèn)為是雷的位置標(biāo)記,或者取消標(biāo)記。 我通過(guò)三個(gè)函數(shù)來(lái)實(shí)現(xiàn),一個(gè)判斷用戶是否需要標(biāo)記;一個(gè)實(shí)現(xiàn)標(biāo)記功能,將@標(biāo)記成* ;一個(gè)實(shí)現(xiàn)取消標(biāo)記功能,將* 改回@。

void to_sign(char board[ROWS][COLS])//判斷是否標(biāo)記{  int chose_b = 0;  int x = 0;  int y = 0;  printf("是否需要標(biāo)記/取消標(biāo)記:>\n(1.標(biāo)記 ;2.取消標(biāo)記 ;3.跳過(guò)該步驟) :>");  scanf("%d", &chose_b);  do{    switch (chose_b)    {    case 1:    {         printf("請(qǐng)輸入需要標(biāo)記的位置坐標(biāo):>\n");         scanf("%d%d", &x, &y);         sign(board, x, y);         break;    }    case 2:    {         printf("請(qǐng)輸入取消標(biāo)記的位置坐標(biāo):>\n");         scanf("%d%d", &x, &y);         unsign(board, x, y);         break;    }    case 3:    {         printf("跳過(guò)此步驟。\n");         chose_b = 0;         break;    }    default:    {     printf("輸入錯(cuò)誤!\n");         chose_b = 0;         break;    }    }    chose_b = 0;  } while (chose_b);}void sign(char board[ROWS][COLS], int x, int y)//用‘*'標(biāo)記雷{  if (board[x][y] == '@')  {    board[x][y] = '*';  }}void unsign(char board[ROWS][COLS], int x, int y)//取消標(biāo)記{  if (board[x][y] == '*')  {    board[x][y] = '@';  }}

附:完整代碼

game.h

#ifndef  _GAME_H_#define  _GAME_H_//用到的頭文件#include#include#include#include#include//定義打印的雷盤行、列#define _ROW 9#define _COL 9#define ROW 16#define COL 16//定義數(shù)組的行、列#define _ROWS _ROW+2#define _COLS _COL+2#define ROWS ROW+2#define COLS COL+2//定義難、易程度雷數(shù)#define EASY_COUNT 10#define HARD_COUNT 40//定義游戲中的函數(shù)void init_board(char board[ROWS][COLS],int row, int col, char c);//初始化void disp_board(char board[ROWS][COLS],int row,int col);//打印void set_mine(char board[ROWS][COLS], int row, int col,int count);//置雷void safe_mine(char mine[ROWS][COLS], char print[ROWS][COLS], int x, int y, int row, int col);//第一次排雷不炸死int find_mine(char mine[ROWS][COLS], char print[ROWS][COLS], int row, int col,int count);//排雷int count_mine(char mine[ROWS][COLS], int x, int y);//數(shù)雷void extend_board(char mine[ROWS][COLS], char print[ROWS][COLS], int x, int y);//擴(kuò)展void to_sign(char board[ROWS][COLS]);//判斷是否標(biāo)記void sign(char board[ROWS][COLS], int x, int y);//標(biāo)記void unsign(char board[ROWS][COLS], int x, int y);//取消標(biāo)記int count_print(char print[ROWS][COLS], int row, int col);//數(shù)未掃位置#endif//_GAME_H_

game.c

#define _CRT_SECURE_NO_WARNINGS#include "game.h"void set_time()//計(jì)時(shí){  printf("用時(shí):%u 秒\n", clock() / CLOCKS_PER_SEC);}void init_board(char board[ROWS][COLS], int row, int col, char c)//初始化雷盤{  memset(board, c, row*col*sizeof(board[0][0]));}void disp_board(char board[ROWS][COLS], int row, int col)//打印雷盤{  int i = 0;  int j = 0;  system("CLS");//清屏  for (i = 0; i <= row; i++)//加行號(hào)  {    printf("%2d ", i);  }  printf("\n");  for (i = 1; i <= row; i++)//加列號(hào)  {    printf("%2d ", i);    for (j = 1; j <= col; j++)    {      printf("%2c ", board[i][j]);    }    printf("\n");  }  printf("\n");  set_time();//打印所用的時(shí)間}void set_mine(char board[ROWS][COLS], int row, int col,int count)//置雷{  int x = 0;  int y = 0;   while (count)  {    x = rand() % row + 1;//隨機(jī)位置范圍1~row    y = rand() % col + 1;//隨機(jī)位置范圍1~col    if (board[x][y] == '0')//判斷是否已有雷    {      board[x][y] = '1';      count--;    }  }}void safe_mine(char mine[ROWS][COLS],char print[ROWS][COLS],int x,int y,int row,int col)//第一次排雷不炸死{  char ch = 0;  int ret = 1;  int number = 0;  if (mine[x][y] == '1')//第一次踩到雷后補(bǔ)救  {    mine[x][y] = '0';    char ch = count_mine(mine, x, y);    print[x][y] = ch + '0';//數(shù)字對(duì)應(yīng)的ASCII值和數(shù)字字符對(duì)應(yīng)的ASCII值相差48,即'0'的ASCII值    extend_board(mine, print, x, y);    while (ret)//在其余有空的地方設(shè)置一個(gè)雷    {      int x = rand() % row + 1;//產(chǎn)生1到row的隨機(jī)數(shù),在數(shù)組下標(biāo)為1到10的范圍內(nèi)布雷      int y = rand() % col + 1;//產(chǎn)生1到col的隨機(jī)數(shù),在數(shù)組下標(biāo)為1到10的范圍內(nèi)布雷      if (mine[x][y] == '0')//找不是雷的地方布雷      {        mine[x][y] = '1';        disp_board(print, row, col);        //disp_board(mine, row, col);        ret--;        break;      }    }  }}int count_mine(char mine[ROWS][COLS], int x, int y)//數(shù)雷{  return mine[x - 1][y] + mine[x - 1][y + 1] + mine[x][y + 1] + mine[x + 1][y + 1] + mine[x + 1][y] +    mine[x + 1][y - 1] + mine[x][y - 1] + mine[x - 1][y - 1] - 8 * '0';//數(shù)周圍一圈八個(gè)位置的雷數(shù)}int count_print(char print[ROWS][COLS], int row, int col)//數(shù)未掃位置{  int count = 0;  int i = 0;  for (i = 1; i <= row; i++)  {    int j = 0;    for (j = 1; j <= col; j++)    {      if (print[i][j] == '@' ||print[i][j] == '*')      {        count++;      }    }  }  return count;}void extend_board(char mine[ROWS][COLS], char print[ROWS][COLS], int x, int y)//運(yùn)用遞歸擴(kuò)展周圍{     int n = 0;  n = count_mine(mine, x, y);   if (n == 0)//當(dāng)該位置周圍雷數(shù)為0時(shí)擴(kuò)展  {    print[x][y] = ' ';//擴(kuò)展的位置變?yōu)椤翱崭瘛贝蛴〕鰜?lái)    if (mine[x - 1][y] == '0' && print[x - 1][y] == '@')    {      extend_board(mine, print, x - 1, y);//遞歸    }    if (mine[x + 1][y] == '0' && print[x + 1][y] == '@')    {      extend_board(mine, print, x + 1, y);    }    if (mine[x][y + 1] == '0' && print[x][y + 1] == '@')    {      extend_board(mine, print, x, y + 1);    }    if (mine[x - 1][y + 1] == '0' && print[x - 1][y + 1] == '@')    {      extend_board(mine, print, x - 1, y + 1);    }    if (mine[x + 1][y + 1] == '0' && print[x + 1][y + 1] == '@')    {      extend_board(mine, print, x + 1, y + 1);    }    if (mine[x][y - 1] == '0' && print[x][y - 1] == '@')    {      extend_board(mine, print, x, y - 1);    }    if (mine[x + 1][y - 1] == '0' && print[x + 1][y -1] == '@')    {      extend_board(mine, print, x + 1, y - 1);    }    if (mine[x - 1][y - 1] == '0' && print[x - 1][y - 1] == '@')    {      extend_board(mine, print, x - 1, y - 1);    }  }  else      print[x][y] = n + '0'; } int find_mine(char mine[ROWS][COLS], char print[ROWS][COLS], int row, int col,int count)//排雷{  int x = 0;  int y = 0;  int number = 0;  int ret = 0;  while (1)  {    printf("輸入坐標(biāo)掃雷\n");    scanf("%d%d", &x, &y);//玩家輸入掃雷的坐標(biāo)位置    if ((x >= 1 && x <= row) && (y >= 1 && y <= col))//判斷輸入坐標(biāo)是否有誤,輸入錯(cuò)誤重新輸入    {      if (mine[x][y] == '0')//沒(méi)踩到雷      {        number++;//記錄掃雷的次數(shù)        char ch = count_mine(mine, x, y);//數(shù)雷數(shù)        print[x][y] = ch + '0';//數(shù)字對(duì)應(yīng)的ASCII值和數(shù)字字符對(duì)應(yīng)的ASCII值相差48,即'0'的ASCII值        extend_board(mine, print, x, y);    //   disp_board(mine, row, col);        disp_board(print, row, col);        if (count_print(print, row, col) == count)//剩余未掃位置=雷數(shù) 時(shí)勝利        {          return 0;        }        to_sign(print);//判斷是否標(biāo)記        disp_board(print, row, col);      }      else if (mine[x][y] == '1')//踩到雷      {        if (ret == 0 && number == 0)        {          ret++;          safe_mine(mine,print,x,y,row,col);        }        else          return 1;      }    }    else    {      printf("輸入錯(cuò)誤!請(qǐng)重新輸入\n");    }  }}void sign(char board[ROWS][COLS], int x, int y)//用‘*'標(biāo)記雷{  if (board[x][y] == '@')  {    board[x][y] = '*';  }}void unsign(char board[ROWS][COLS], int x, int y)//取消標(biāo)記{  if (board[x][y] == '*')  {    board[x][y] = '@';  }}void to_sign(char board[ROWS][COLS])//判斷是否標(biāo)記{  int chose_b = 0;  int x = 0;  int y = 0;  printf("是否需要標(biāo)記/取消標(biāo)記:>\n(1.標(biāo)記 ;2.取消標(biāo)記 ;3.跳過(guò)該步驟) :>");  scanf("%d", &chose_b);  do{    switch (chose_b)    {    case 1:    {         printf("請(qǐng)輸入需要標(biāo)記的位置坐標(biāo):>\n");         scanf("%d%d", &x, &y);         sign(board, x, y);         break;    }    case 2:    {         printf("請(qǐng)輸入取消標(biāo)記的位置坐標(biāo):>\n");         scanf("%d%d", &x, &y);         unsign(board, x, y);         break;    }    case 3:    {         printf("跳過(guò)此步驟。\n");         chose_b = 0;         break;    }    default:    {     printf("輸入錯(cuò)誤!\n");         chose_b = 0;         break;    }    }    chose_b = 0;  } while (chose_b);}

pro.c

#define _CRT_SECURE_NO_WARNINGS#include "game.h"void menu(){  printf("+---------------------------------+\n");  printf("+   Welcome to 掃雷世界 !   +\n");  printf("+     ο(=>ω<=)ρ⌒☆    +\n");  printf("+      1、play        +\n");  printf("+      0、exit        +\n");  printf("+---------------------------------+\n");}void game(){  char mine[ROWS][COLS] = { 0 };  char print[ROWS][COLS] = { 0 };  int chose_m = 0;  int ret = 0;  printf("請(qǐng)選擇模式(1、簡(jiǎn)單 2、困難):>");//選擇游戲難易程度,產(chǎn)生不同大小的棋盤和雷數(shù)  scanf("%d", &chose_m);  switch (chose_m)  {  case 1:  {            init_board(mine, ROWS, COLS, '0');//初始化雷盤         init_board(print, ROWS, COLS, '@');         set_mine(mine, _ROW, _COL, EASY_COUNT);//布雷  //      disp_board(mine, _ROW, _COL);//打印雷盤         disp_board(print, _ROW, _COL);         int ret = find_mine(mine, print, _ROW, _COL, EASY_COUNT);//掃雷,踩到雷返回1,沒(méi)有踩到雷返回0         while (1)//循環(huán)掃雷         {           if (ret == 0)//若返回0則勝利           {             disp_board(print, _ROW, _COL);             printf("WOW~ YOU WIN!\n\n");             break;           }          if (ret)//若返回1則失敗           {             disp_board(mine, _ROW, _COL);//打印雷盤             printf("GAME OVER!\n");             break;           }            disp_board(print, _ROW, _COL);//打印玩家棋盤         }         break;    }    case 2:    {         init_board(mine, ROWS, COLS, '0');//初始化雷盤         init_board(print, ROWS, COLS, '@');         set_mine(mine, ROW, COL, HARD_COUNT);//布雷    //    disp_board(mine, ROW, COL);//打印雷盤         disp_board(print, ROW, COL);         while (1)//循環(huán)掃雷         {           int ret = find_mine(mine, print, ROW, COL, HARD_COUNT);//掃雷,踩到雷返回1,沒(méi)有踩到雷返回0           if (ret == 0)//若返回0勝利           {             disp_board(print, ROW, COL);             printf("WOW~ YOU WIN!\n\n");             break;           }           if (ret)//若返回1失敗           {             disp_board(mine, ROW, COL);//打印雷盤             printf("GAME OVER!\n");             break;           }           disp_board(print, ROW, COL);//打印玩家棋盤         }         break;    }    default:    {          printf("輸入錯(cuò)誤!\n");          break;    }  }}void text(){  srand((unsigned int)time(NULL));//產(chǎn)生隨機(jī)值發(fā)生器  int chose = 0;//選擇是否開(kāi)始游戲  do  {    menu();//菜單    printf("請(qǐng)選擇:>");    scanf("%d", &chose);    switch (chose)    {    case 1:      game();//開(kāi)始游戲      break;    case 0:      printf("退出游戲\n");      break;    default:      printf("輸入錯(cuò)誤,沒(méi)有該選項(xiàng)\n");      break;    }  } while (chose);}int main(){  text();  system("pause");  return 0;}

到此,關(guān)于“C語(yǔ)言實(shí)現(xiàn)掃雷小游戲?qū)嵗榻B”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)?lái)更多實(shí)用的文章!


新聞名稱:C語(yǔ)言實(shí)現(xiàn)掃雷小游戲?qū)嵗榻B-創(chuàng)新互聯(lián)
標(biāo)題網(wǎng)址:http://weahome.cn/article/dpcggs.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部