成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

《C語言入門》掃雷小游戲C語言實現(xiàn)

caige / 606人閱讀

摘要:條消息語言入門三子棋語言實現(xiàn)詳細(xì)版的博客博客條消息語言入門三子棋語言實現(xiàn)詳細(xì)版的博客博客我們將雷盤初始化為統(tǒng)一的符號。

目錄

1.原理簡介

2.分布目標(biāo)及代碼實現(xiàn)

3.總結(jié)

1.原理簡介

?首先我們需要一個空的雷盤,在其中隨機埋入十枚雷,當(dāng)我們排這顆雷時,若此位置為雷,則游戲失敗,若不是雷,則會出現(xiàn)周圍八個方格中雷的個數(shù),我們使用數(shù)組實現(xiàn)這一目標(biāo)。

? ? ? 2.分布目標(biāo)及代碼實現(xiàn)

首先我們需要打印一個菜單,并且接受用戶的輸入數(shù)據(jù),判斷是否進行游戲,如三子棋一樣,具體代碼如下:

void test(){	int input = 0;	srand((unsigned int)time(NULL));	do	{		menu();		printf("請選擇:>");		scanf("%d", &input);		switch (input)		{		case 1:			//掃雷			game();			break;		case 0:			printf("退出游戲/n");			break;		default:			printf("選擇錯誤/n");			break;		}	} while (input);}
void menu(){	printf("***********************/n");	printf("*****  1. play     ****/n");	printf("*****  0. exit     ****/n");	printf("***********************/n");}

然后需要設(shè)置一個空盤,我們設(shè)置一個基礎(chǔ)班9*9的雷盤,(注意!??!當(dāng)我們排查的雷格在邊緣時,若要統(tǒng)計周圍八個方格中雷的個數(shù),則會產(chǎn)生數(shù)組越界的問題,所以我們初始化時設(shè)置一個11*11的空盤,再在其中的9*9的空盤里設(shè)置雷),同三子棋一樣,我們?yōu)榱撕罄m(xù)代碼維護方便,我們使用define定義棋盤大?。ㄈ魧θ悠逵信d趣可移步我的另一篇博客。(14條消息) 《C語言入門》三子棋C語言實現(xiàn)(詳細(xì)版)_m0_60756071的博客-CSDN博客

我們將雷盤初始化為統(tǒng)一的符號。

下面是部分代碼:

#define ROW 9#define COL 9#define ROWS ROW+2#define COLS COL+2
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){	//1~9	int i = 0;	int j = 0;	//列號的打印	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");	}}

這樣我們可以打印出這樣一個雷盤

?接下來我們需要在棋盤中隨機設(shè)置10顆雷,同樣利用前文代碼中提到的srand,我們使用rand()%9+1便可得到1~9的數(shù)字,正好在我們設(shè)置雷的范圍內(nèi),具體代碼如下:

void SetMine(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--;		}	}}

這是一個隱藏的棋盤,我們將雷設(shè)置在這里面,有雷的數(shù)組元素設(shè)置為‘1’,沒有雷的位置設(shè)置為‘0’。接下來則是玩家進行排雷操作,我們編寫一個函數(shù),返回玩家所選位置周圍八個格子里雷的個數(shù)(也就是數(shù)組里為字符‘1’的個數(shù)),這里我們巧妙地使用"0"特殊值實現(xiàn)這一目標(biāo),具體代碼如下:

static int get_mine_count(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";}

這時候我們就進行到了最后一步,我們將再編寫一個函數(shù),在此函數(shù)中調(diào)用上面那個函數(shù),來判斷用戶輸入坐標(biāo)后的輸贏或繼續(xù)與否。具體代碼如下:

void FindMine(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("請輸入要排查的坐標(biāo):>");		scanf("%d %d", &x, &y);		if (x >= 1 && x <= row && y >= 1 && y <= col)		{			if (mine[x][y] == "1")			{				printf("很遺憾你被炸死了/n");				DisplayBoard(mine, row, col);				break;			}			else			{				//計算x,y坐標(biāo)周圍有幾個雷				int n = get_mine_count(mine, x, y);				show[x][y] = n + "0";				DisplayBoard(show, row, col);				win++;			}		}		else		{			printf("輸入坐標(biāo)非法,無法排雷,請重新輸入/n");		}	}	if (win == row * col - EASY_COUNT)	{		printf("恭喜你,排雷成功/n");		DisplayBoard(mine, row, col);	}}

好了,到了這一步分塊代碼大致完成,我們將代碼整合到一起就可以實現(xiàn)掃雷小游戲。

完整代碼請見c語言/2021.11.21 · 吳昌盛/code - 碼云 - 開源中國 (gitee.com)

3.總結(jié)

我們在掃雷游戲中巧妙地設(shè)置了更大的空盤來避免數(shù)組越界的問題,使用兩個雷盤,一個埋雷,另一個打印顯示給玩家,讓玩家排雷,在統(tǒng)計周圍雷的個數(shù)的時候巧妙的使用了return返回。

感謝大家的閱讀,歡迎各位的評論討論,也感謝各位的點贊,祝大家萬事如意?。?!

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/124095.html

相關(guān)文章

  • C語言實現(xiàn)入門游戲——掃雷

    摘要:上一期咱們用語言實現(xiàn)了三子棋的小游戲語言實現(xiàn)三子棋今天我們再來寫個掃雷的游戲,說起掃雷,相信大家都不陌生,可能許多朋友還是玩掃雷的高手。 ? ? ?上一期咱們用C語言實現(xiàn)了三子棋的小游戲? C語言實現(xiàn)三子棋? ? ? ?今天我們再來寫個掃雷的游戲,說起掃雷,相信大家都不陌生,可能許多朋友還是...

    nevermind 評論0 收藏0
  • C語言/入門游戲掃雷完整版(包含標(biāo)記,安全保護及展開)

    摘要:有雷則返回雷數(shù)難度設(shè)置其實實現(xiàn)思路比較簡單,可以再設(shè)置和。 知識提要(自主編寫游戲所需要的知識): 1.函數(shù)的基本實現(xiàn); 2.二維數(shù)組; 目錄 掃雷 1.基本界面的實現(xiàn) 2.初始化棋盤(二維數(shù)組) 3.棋盤的打印 4.布置雷 5.安全保護 6.雷數(shù)顯示 7.排查雷 8.標(biāo)記雷 9.展開 10...

    0x584a 評論0 收藏0
  • [ C語言 ] 掃雷 ------> 用C語言實現(xiàn)game2

    摘要:函數(shù)游戲菜單請選擇掃雷游戲退出游戲選擇錯誤解析函數(shù)內(nèi)部利用時間戳,形成隨機數(shù),主要目的是實現(xiàn)游戲中地雷的隨機埋放。 前言 本篇文章使用C語言實現(xiàn)簡單小游戲---掃雷。(文章最后有完整代碼鏈接) 想必大多數(shù)人都玩過或者了解過掃雷的游戲規(guī)則,但是在這里,我們在一起重溫一下掃雷的游戲規(guī)則,也更好...

    I_Am 評論0 收藏0
  • C語言實現(xiàn)游戲】(二)掃雷(遞歸實現(xiàn)排雷)

    摘要:玩家選擇開始游戲后,出現(xiàn)雷盤,并且隨機布置雷。雷盤的數(shù)組大小為,方便計算掃雷時周圍雷的數(shù)量,并防止數(shù)組越界。放置布置的雷的信息放置排查出雷的信息初始化雷盤初始化展示界面打印展示界面效果如下布置雷隨機在數(shù)組中讓十個變成作為雷。 目錄 前言 一、游戲思路 二、游戲框架 1.菜單界面 1.菜單:...

    U2FsdGVkX1x 評論0 收藏0
  • C語言初階學(xué)習(xí)——掃雷游戲(遞歸)

    摘要:目錄前言前言前期的準(zhǔn)備前期的準(zhǔn)備游戲代碼的具體實現(xiàn)游戲代碼的具體實現(xiàn)完整版的掃雷小游戲代碼完整版的掃雷小游戲代碼總結(jié)總結(jié)前言掃雷是一款大眾類的益智小游戲,于年發(fā)行。 目錄 前言 前期的準(zhǔn)備 游戲代碼的具體實現(xiàn) 1、text.c 2、game.h 3、game.c 完整版的掃雷小游戲代碼: 1...

    zhonghanwen 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<