最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C語(yǔ)言代碼實(shí)現(xiàn)掃雷游戲

 更新時(shí)間:2020年02月10日 14:19:08   作者:Listen-Y  
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言代碼實(shí)現(xiàn)掃雷游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了C語(yǔ)言實(shí)現(xiàn)掃雷游戲的具體代碼,供大家參考,具體內(nèi)容如下

該游戲我們也是利用數(shù)組完成,設(shè)置倆個(gè)數(shù)組一個(gè)mine數(shù)組,一個(gè)show數(shù)組。

mine數(shù)組存放雷,show數(shù)組顯示棋盤(pán)并且顯示該位置是否有雷或者顯示該位置周?chē)袔讉€(gè)雷。

數(shù)組大小有講究,我們宏定義變量 ROW COL 為9 定義ROWS COLS為11,我們顯示的是9X9的棋盤(pán),也是將雷設(shè)置在9X9的位置內(nèi),但是我們?cè)O(shè)置數(shù)組是設(shè)置11X11,因?yàn)檫@樣方便我們遍歷9X9棋盤(pán)四邊位置上某位置四周雷的數(shù)目,不然的話會(huì)發(fā)生越界錯(cuò)誤。

對(duì)于雷的符號(hào),我們?cè)O(shè)置空位置為 0,有雷的位置為1,這樣易于我們統(tǒng)計(jì)某一位置周?chē)卸嗌倮椎臄?shù)目。

重點(diǎn)在于掃雷函數(shù),玩家輸入x y位置,我們判斷該位置是否有雷,否的話判斷該位置周?chē)卸嗌倮撞⒃诖嬗趕how數(shù)組display給玩家。并且我們輸入一個(gè)位置當(dāng)該位置不是雷的時(shí)候,計(jì)數(shù)器count++;若果該計(jì)數(shù)器count==col*row-EAXY_COUNT;我們就判斷玩家贏。

#include<stdio.h>
#include<stdlib.h>
#include<time.h>

#define ROW 9
#define COL 9

#define ROWS ROW+2
#define COLS COL+2

#define EASY_COUNT 10

//函數(shù)聲明
void ChushiBoard(char board[ROWS][COLS],int rows,int cols,char set);
void Dayinboard(char board[ROWS][COLS], int row, int col);
void BuzhiBoard(char mine[ROWS][COLS], int row, int col);
void CaoleiBoard(char mine[ROWS][COLS],char show[ROWS][COLS],int row,int col);

void menu()
{
 printf("*****************************************\n");
 printf("*****************************************\n");
 printf("**** 輸入1開(kāi)始游戲 輸入0退出游戲 *****\n");
 printf("*****************************************\n");
 printf("*****************************************\n\n\n");
}

void game()
{
 char mine[ROWS][COLS];//存放雷
 char show[ROWS][COLS];//顯示排查出來(lái)的雷
 //初始化
 ChushiBoard(mine, ROWS, COLS,'0');//'0'
 ChushiBoard(show, ROWS, COLS,'*');//'*'
 //布置雷
 BuzhiBoard(mine,ROW,COL);
 //Dayinboard(mine, ROW, COL);
 //打印棋盤(pán)
 Dayinboard(show, ROW, COL);
 //掃雷
 CaoleiBoard(mine,show,ROW,COL);
}



void test()
{
 int input = 0;
 do
 {
 menu();
 printf("請(qǐng)輸入:>");
 scanf("%d", &input);
 switch (input)
 {
 case 1:
 game();
 break;
 case 0:
 printf("退出游戲\n\n");
 break;
 default:
 printf("輸入錯(cuò)誤,重新輸入\n\n");
 break;
 }
 } while (input);
}


int main()
{
 test();
 system("pause");
 return 0;
}


void ChushiBoard(char board[ROWS][COLS], int rows, int cols,char set)
{
 int i = 0;
 int j = 0;
 for (i = 0; i < rows; i++)
 {
 for (j = 0; j < cols; j++)
 {
 board[i][j] = set;
 }
 }
}

void Dayinboard(char board[ROWS][COLS], int row, int col)
{
 int i = 0;
 int j = 0;
 printf("------------------------------\n");
 for (i = 0; i <= col; i++)
 {
 printf(" %d ", i);
 }
 printf("\n");
 for (i = 1; i <= row; i++)
 {
 printf(" %d ", i);
 for (j = 1; j <= col; j++)
 {
 printf(" %c ", board[i][j]);
 }
 printf("\n");
 }
 printf("------------------------------\n");
}


void BuzhiBoard(char mine[ROWS][COLS], int row, int col)
{
 int count = EASY_COUNT;
 while (count)
 {
 int x = rand()%row+1;
 int y = rand()%col+1;
 if (mine[x][y] == '0')
 {
 mine[x][y] = '1';
 count--;
 }
 }
}

static int GetMineCount(char mine[ROWS][COLS], int x, int y)
{
 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';
}



void CaoleiBoard(char mine[ROWS][COLS], char show[ROWS][COLS], int row, int col)
{
 int x = 0;
 int y = 0;
 int win = 0;
 while (win<row*col-EASY_COUNT)
 {
 printf("請(qǐng)輸入要排查的坐標(biāo)(格式:X空格X回車(chē)):>");
 scanf("%d%d", &x, &y);
 if (x >= 1 && x <= 9 && y >= 1 && y <= 9)
 {
 if (mine[x][y] == '1')
 {
 printf(" 很遺憾,你被炸死了?。?!\n");
 Dayinboard(mine, row, col);
 break;
 }
 else
 {
 int count = GetMineCount(mine,x,y);
 show[x][y] = count+'0';
 Dayinboard(show, row, col);
 win++;
 }

 }
 else
 {
 printf("輸入的坐標(biāo)非法\n");
 }
 }
 if (win == row*col - EASY_COUNT)
 {
 printf(" 恭喜你,你排雷成功了?。。n");
 }
}

運(yùn)行結(jié)果:

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • c++報(bào)錯(cuò)問(wèn)題解決方案lvalue required as left operand of assignment

    c++報(bào)錯(cuò)問(wèn)題解決方案lvalue required as left opera

    這篇文章主要介紹了c++報(bào)錯(cuò):lvalue required as left operand of assignment,出現(xiàn)此錯(cuò)誤原因,是因?yàn)椋忍?hào)左邊是不可被修改的表達(dá)式或常量,而表達(dá)式或常量不能作為左值,需要的朋友可以參考下
    2023-01-01
  • C語(yǔ)言代碼實(shí)現(xiàn)三子棋小游戲

    C語(yǔ)言代碼實(shí)現(xiàn)三子棋小游戲

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言代碼實(shí)現(xiàn)三子棋小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-11-11
  • 使用matlab繪制七夕表白玫瑰花束

    使用matlab繪制七夕表白玫瑰花束

    又是一年七夕節(jié)要到了,每年一次直男審美MATLAB繪圖大賽開(kāi)始了,于是今年對(duì)我之前寫(xiě)的老代碼進(jìn)行了點(diǎn)優(yōu)化組合,整了個(gè)花球變花束,感興趣的小伙伴可以動(dòng)手試一試
    2023-08-08
  • C語(yǔ)言示例講解結(jié)構(gòu)體的聲明與初始化方法

    C語(yǔ)言示例講解結(jié)構(gòu)體的聲明與初始化方法

    結(jié)構(gòu)體是一些值的集合,這些值稱(chēng)為成員變量,結(jié)構(gòu)體的每個(gè)成員可以是不同類(lèi)型的變量。本文將通過(guò)示例為大家詳細(xì)講講C語(yǔ)言中結(jié)構(gòu)體的使用,需要的可以參考一下
    2022-07-07
  • 利用C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單三子棋游戲

    利用C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單三子棋游戲

    這篇文章主要為大家詳細(xì)介紹了利用C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單三子棋游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-03-03
  • linux下c語(yǔ)言中隱藏進(jìn)程命令行參數(shù)(例如輸入密碼等高危操作)

    linux下c語(yǔ)言中隱藏進(jìn)程命令行參數(shù)(例如輸入密碼等高危操作)

    啟動(dòng)程序很多時(shí)候用命令行參數(shù)可以很方便,做到簡(jiǎn)化一些配置,但是輸入用戶(hù)名密碼等操作,如果通過(guò)進(jìn)程查看工具直接看到密碼就太不安全了,這里就為大家分享一下方法
    2021-01-01
  • C++?超詳細(xì)講解stack與queue的使用

    C++?超詳細(xì)講解stack與queue的使用

    C++?Stack(堆棧)?是一個(gè)容器類(lèi)的改編,為程序員提供了堆棧的全部功能,也就是說(shuō)實(shí)現(xiàn)了一個(gè)先進(jìn)后出(FILO)的數(shù)據(jù)結(jié)構(gòu),許多程序都使用了?queue?容器。queue?容器可以用來(lái)表示超市的結(jié)賬隊(duì)列或服務(wù)器上等待執(zhí)行的數(shù)據(jù)庫(kù)事務(wù)隊(duì)列
    2022-03-03
  • c/c++靜態(tài)庫(kù)之間相互調(diào)用的實(shí)戰(zhàn)案例

    c/c++靜態(tài)庫(kù)之間相互調(diào)用的實(shí)戰(zhàn)案例

    C++調(diào)用C的函數(shù)比較簡(jiǎn)單,直接使用extern "C" {}告訴編譯器用C的規(guī)則去編譯C代碼就可以了,下面這篇文章主要給大家介紹了關(guān)于c/c++靜態(tài)庫(kù)之間相互調(diào)用的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-08-08
  • 一文解析C語(yǔ)言中動(dòng)態(tài)內(nèi)存管理

    一文解析C語(yǔ)言中動(dòng)態(tài)內(nèi)存管理

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言中動(dòng)態(tài)內(nèi)存管理的相關(guān)知識(shí),文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,有需要的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-02-02
  • C++?Cartographer源碼中關(guān)于傳感器的數(shù)據(jù)傳遞實(shí)現(xiàn)

    C++?Cartographer源碼中關(guān)于傳感器的數(shù)據(jù)傳遞實(shí)現(xiàn)

    這篇文章主要介紹了C++?Cartographer源碼中關(guān)于傳感器的數(shù)據(jù)傳遞實(shí)現(xiàn),前面已經(jīng)談到了Cartographer中添加軌跡的方法和傳感器的數(shù)據(jù)流動(dòng)走向。發(fā)現(xiàn)在此調(diào)用了LaunchSubscribers這個(gè)函數(shù)來(lái)訂閱相關(guān)傳感器數(shù)據(jù)
    2023-03-03

最新評(píng)論

赫章县| 永定县| 襄樊市| 闽清县| 吉首市| 嵊州市| 万荣县| 静乐县| 西青区| 鲁甸县| 泰兴市| 庆元县| 剑川县| 二连浩特市| 泽普县| 库伦旗| 通渭县| 滁州市| 新兴县| 金平| 浙江省| 北京市| 安溪县| 临沂市| 姜堰市| 台北市| 泸溪县| 阿尔山市| 丰台区| 南昌市| 涞源县| 屏东市| 茂名市| 浦城县| 定南县| 蒲城县| 开远市| 黄浦区| 通道| 双牌县| 山西省|