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

c++實(shí)現(xiàn)掃雷小游戲代碼分享

 更新時(shí)間:2022年02月22日 11:23:58   作者:LazyEveryday  
這篇文章主要介紹了c++實(shí)現(xiàn)掃雷小游戲并附上代碼分享,代碼不能夠?qū)崿F(xiàn)當(dāng)所查坐標(biāo)周圍雷的數(shù)量為0時(shí),直接展開周圍坐標(biāo),但有一點(diǎn)的知識(shí)性參考價(jià)值,需要的小伙伴可以參考一下

分成兩個(gè)源文件和一個(gè)頭文件

注意:這串代碼并不完整,不能夠?qū)崿F(xiàn)當(dāng)所查坐標(biāo)周圍雷的數(shù)量為0時(shí),直接展開周圍坐標(biāo);

頭文件:game.h

#include <stdio.h>


#define count 10 //雷的數(shù)量

//定義 行-ROW,列-COL
#define ROW 9
#define COL 9
#define ROWS ROW+2 //多加一些,方便代碼
#define COLS COL+2

//初始化棋盤,聲明的函數(shù)均在game.c中實(shí)現(xiàn)
void InitBoard(char board[ROWS][COLS],int rows,int cols);

//打印棋盤
void DisplayBoard(char board[ROW][COL],int row.int col);

//布置雷
void SetMine(char board[ROW][COLS],int row,int col);

//找雷
void FindMine(char mine[][COLS],char show[][COLS],int row,int col);

第一個(gè)源文件:saolei.c

#include "game.h" ?//需要包含和聲明的東西在game.h中完成

void menu()
{?
? printf(" ? ? ? ? ? ? ? ? ?\n");
? printf(" ? ? ? 1.play ? ? \n");
? printf(" ? ? ? 0.exit ? ? \n");
? printf(" ? ? ? ? ? ? ? ? ?\n");
}

void game()
{?
? // ROW and COL 在game.h中定義
? char mine[ROWS][COLS]; ?// 地雷埋藏的棋盤
? char show[ROWS][COLS]; ?// 展示出的棋盤
? //初始化棋盤
? //game()中的函數(shù)在game.h中聲明,在game.c中實(shí)現(xiàn)
? InitBoard(mine,ROWS,COLS,'0'); ? //0代表無(wú)雷,1代表有雷
? InitBOard(show,ROWS,COLS,'*');
? //打印棋盤
? DisplayBoard(show,ROW,COL);
? //布置雷
? SetMine(mine,ROW,COL);
? //找雷
? FindMine(mine,show,ROW,COL);
??
}


int main()
{
? srand((unsigned int) time(NULL));//生成隨機(jī)數(shù)
? int input = 0;
? do ? ? ? ? ? ? ?//do-while循環(huán)
? {
? ? menu(); ? ?//(1--play ? 0--exit)也是do-while循環(huán)的條件
? ? printf("請(qǐng)選擇:");
? ? scanf("%d",&input);
? ? switch(input)
? ? {?
? ? case 1:
? ? ? ? printf("開始游戲\n");
? ? ? ? game();
? ? ? ? break;
? ? ?case 0:
? ? ? ? printf("退出游戲");
? ? ? ? break;
? ? ?default: ??
? ? ? ? printf("選擇錯(cuò)誤,請(qǐng)重新輸入");
? ? ? ? break;
? ? }
? }while(input)
??
? return 0;
}

第二個(gè)源文件:game.c

#include "game.h"

void InitBoard(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 DisplayBoard(char board[ROWS][COLS],int row,int col)
{
? int i = 0;
? int j = 0;
? for(i = 0;i <= row;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");
? }
??
}

void SetMine(char board[ROW][COL],int row,int col)
{
? int x = 0;
? int y = 0;
? while(count) //count-雷的數(shù)量
? {
? ? x = rand()%row + 1;//因?yàn)樵?-row中布置雷,邊緣一排不用,最后為了記錄
? ? y = rand()%col + 1;//周圍雷的數(shù)量方便,同時(shí)代碼方便
? ? if( board[x][y] == '0')
? ? {
? ? ? board[x][y] = '1';
? ? ? count--;
? ? }
? }
}

//算出周圍雷的個(gè)數(shù)
int get_mine_count(mine[ROWS][COLS],int row,int col)
{
? int i = 0;
? int j = 0;
? int mine_count = 0;
? for( i = -1;i <= 1; i++ )
? {
? ? for( j = -1;j <= 1; j++ )
? ? {
? ? ? if( mine[i][j] == '1')
? ? ? {
? ? ? ? mine_count++;
? ? ? }
? ? }
? }
? return mine_count;
}

void FindMine(char mine[][COLS],char show[][COLS],int row,int col)
{
? int x = 0;
? int y = 0;
? int ret = 0;//已經(jīng)查找過(guò)的位置的數(shù)量
? while(ret < row * col - count)//當(dāng)還剩下count的數(shù)量時(shí),贏得游戲
? {?
? ? printf("請(qǐng)輸入查找位置下標(biāo):");
? ? scanf("%d%d",&x,&y);
? ? if(x >= 1 && x <= row && y >= 1 && y <= col)
? ? {
? ? ? if(mine[x][y] == '0')
? ? ? {
? ? ? ? //當(dāng)所查坐標(biāo)的位置不是雷時(shí),將該坐標(biāo)展示成周圍雷的個(gè)數(shù)
? ? ? ? int c = get_mine_count(mine,ROW,COL);
? ? ? ? mine[x][y] = c + '0';//返回值為int型,數(shù)組為char型,因此+'0'
? ? ? ? ret++;
? ? ? ? DisplayBoard(show,ROW,COL);
? ? ? }
? ? ? else
? ? ? {
? ? ? ? printf("YOU LOSE\n");
? ? ? ? break;
? ? ? }
? ? }
? ? else
? ? {
? ? ? printf("輸入非法,請(qǐng)重新輸入\n");
? ? }
? }
? printf("VICTORY\n"); ?//獲得勝利
}

到此這篇關(guān)于c++實(shí)現(xiàn)掃雷小游戲代碼分享的文章就介紹到這了,更多相關(guān)c++實(shí)現(xiàn)掃雷小游戲內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 快速入門的一些C\C++書籍

    快速入門的一些C\C++書籍

    這篇文章為大家精心推薦了一些快速入門的一些C\C++書籍,希望大家可以喜歡,對(duì)這門語(yǔ)言可以產(chǎn)生興趣,需要的朋友可以參考下
    2015-12-12
  • C語(yǔ)言如何把浮點(diǎn)數(shù)轉(zhuǎn)換為字符串

    C語(yǔ)言如何把浮點(diǎn)數(shù)轉(zhuǎn)換為字符串

    這篇文章主要介紹了C語(yǔ)言如何把浮點(diǎn)數(shù)轉(zhuǎn)換為字符串方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • C++中VTK9.3.0刻度標(biāo)簽重疊的問(wèn)題記錄

    C++中VTK9.3.0刻度標(biāo)簽重疊的問(wèn)題記錄

    這篇文章主要介紹了C++中VTK9.3.0刻度標(biāo)簽重疊的問(wèn)題,本文采用VTK9.3.0版本,其他版本如VKT8.0亦有同樣的問(wèn)題,需要的朋友可以參考下
    2024-06-06
  • C++中友元的實(shí)例詳解

    C++中友元的實(shí)例詳解

    這篇文章主要介紹了C++中友元的實(shí)例詳解的相關(guān)資料,希望通過(guò)本文大家能掌握友元的使用方法,需要的朋友可以參考下
    2017-09-09
  • C++卸載程序功能示例

    C++卸載程序功能示例

    用C++寫一個(gè)自己的卸載程序來(lái)完成程序的卸載工作,同時(shí)運(yùn)行后要?jiǎng)h除卸載程序本身,并刪除卸載程序所在的文件夾
    2013-11-11
  • C++修煉之拷貝構(gòu)造函數(shù)

    C++修煉之拷貝構(gòu)造函數(shù)

    這篇文章主要內(nèi)容是6個(gè)默認(rèn)成員函數(shù)之一的拷貝構(gòu)造函數(shù)的認(rèn)識(shí)與學(xué)習(xí),讓同學(xué)們充分理解淺拷貝與深拷貝,感興趣的小伙伴可以參考閱讀
    2023-04-04
  • C語(yǔ)言超詳細(xì)文件操作基礎(chǔ)下篇

    C語(yǔ)言超詳細(xì)文件操作基礎(chǔ)下篇

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言的文件操作,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2022-03-03
  • C++ 實(shí)現(xiàn)線程安全的頻率限制器(推薦)

    C++ 實(shí)現(xiàn)線程安全的頻率限制器(推薦)

    這篇文章主要介紹了在 C++ 中實(shí)現(xiàn)一個(gè)線程安全的頻率限制器,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-05-05
  • 深入探索C++中stack和queue的底層實(shí)現(xiàn)

    深入探索C++中stack和queue的底層實(shí)現(xiàn)

    這篇文章主要介紹了C++中的stack和dequeue的底層實(shí)現(xiàn),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-09-09
  • 四個(gè)例子說(shuō)明C語(yǔ)言?全局變量

    四個(gè)例子說(shuō)明C語(yǔ)言?全局變量

    這篇文章主要介紹了四個(gè)例子說(shuō)明C語(yǔ)言?全局變量,全局變量是C語(yǔ)言語(yǔ)法和語(yǔ)義中一個(gè)很重要的知識(shí)點(diǎn),首先它的存在意義需要從三個(gè)不同角度去理解,下面來(lái)看看這三個(gè)不同的內(nèi)容分別是什么吧
    2022-04-04

最新評(píng)論

方城县| 叶城县| 雷州市| 阳新县| 沁源县| 加查县| 哈巴河县| 湄潭县| 马公市| 团风县| 玉田县| 合川市| 孟村| 汾阳市| 昌图县| 南昌市| 南川市| 宝丰县| 胶州市| 永胜县| 元阳县| 西和县| 道真| 馆陶县| 贡觉县| 阆中市| 新安县| 龙泉市| 依安县| 石楼县| 凤庆县| 石城县| 宁陵县| 娄烦县| 凯里市| 铜山县| 日土县| 临澧县| 林西县| 九龙县| 根河市|