您好,登錄后才能下訂單哦!
這篇文章主要介紹了怎么用c++代碼實(shí)現(xiàn)掃雷小游戲的相關(guān)知識(shí),內(nèi)容詳細(xì)易懂,操作簡(jiǎn)單快捷,具有一定借鑒價(jià)值,相信大家閱讀完這篇怎么用c++代碼實(shí)現(xiàn)掃雷小游戲文章都會(huì)有所收獲,下面我們一起來(lái)看看吧。
分成兩個(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)查找過的位置的數(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)掃雷小游戲”這篇文章的內(nèi)容就介紹到這里,感謝各位的閱讀!相信大家對(duì)“怎么用c++代碼實(shí)現(xiàn)掃雷小游戲”知識(shí)都有一定的了解,大家如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。