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

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

掃雷游戲【C語言版】(超詳細(xì)~符源代碼~)-創(chuàng)新互聯(lián)

文章目錄
    • 一.掃雷游戲的實(shí)現(xiàn)思路💛
    • 二.test.c文件測(cè)試游戲💛
      • 1.文件實(shí)現(xiàn)的思路?
      • 2.文件代碼?
      • 3.注意事項(xiàng)?
    • 三.game.h聲明游戲💛
    • 四.game.c實(shí)現(xiàn)游戲💛

目前創(chuàng)新互聯(lián)公司已為千余家的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)絡(luò)空間、網(wǎng)站運(yùn)營(yíng)、企業(yè)網(wǎng)站設(shè)計(jì)、寶豐網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長(zhǎng),共同發(fā)展。一.掃雷游戲的實(shí)現(xiàn)思路💛

在完成這個(gè)游戲之前,我們需要知道這個(gè)游戲的運(yùn)行過程即玩法~在這里我以最簡(jiǎn)單的99矩陣的掃雷模型為大家介紹。在這個(gè)游戲中,在99的矩陣中,我們首先要隨機(jī)布置一些雷(這里我們?cè)O(shè)為10個(gè)),然后玩家隨機(jī)排查雷,而若玩家翻開的坐標(biāo)下沒有雷,則會(huì)顯示出這個(gè)坐標(biāo)周圍位置中所含有的雷的個(gè)數(shù)。(此時(shí)就一定要利用好這個(gè)信息,而進(jìn)行下一步的排查哦)而若不幸翻開的坐標(biāo)就對(duì)應(yīng)雷,則就被炸死,游戲結(jié)束。

在這個(gè)游戲中我們也會(huì)用到三個(gè)文件,分別是

文件名作用
test.c測(cè)試游戲
game.h聲明游戲
game.c實(shí)現(xiàn)游戲
二.test.c文件測(cè)試游戲💛 1.文件實(shí)現(xiàn)的思路?

在進(jìn)入游戲時(shí),我們先會(huì)展現(xiàn)出目錄。之后進(jìn)入游戲,我們?cè)谶@里
①.需要?jiǎng)?chuàng)建兩個(gè)9*9的二維數(shù)組
②.將兩個(gè)數(shù)組均初始化
③.在第一個(gè)數(shù)組中埋雷
④.找到雷的位置

2.文件代碼?
void menu()
{printf("******************\n");
	printf("***** 1.play *****\n");
	printf("***** 0.exit *****\n");
	printf("******************\n");
}
void game()
{char mine[ROWS][COLS] = {0 };
	char show[ROWS][COLS] = {0 };
	InitBoard(mine, ROWS, COLS,'0');
	InitBoard(show, ROWS, COLS,'*');
	DisplayBoard(show, ROW, COL);
	SetMine(mine, ROW, COL);
	//DisplayBoard(mine, ROW, COL);

	FindMine(mine,show, ROW, COL);
}
void test()
{srand((unsigned int)time(NULL));
	int input = 0;
	do
	{menu();
		printf("請(qǐng)輸入:");
		scanf("%d", &input);
		switch (input)
		{case 1:
			//printf("開始游戲\n");
			game();
			break;
		case 0:
			printf("退出游戲\n");
			break;
		default:
			printf("輸入錯(cuò)誤,請(qǐng)重新輸入\n");
			break;
		}
	} 
	while (input);
}
int main()
{test();
	return 0;
}
3.注意事項(xiàng)?

在這里我們出現(xiàn)了未定義的ROW,COL以及ROWS,COLS。這是因?yàn)槲覀冊(cè)趃ame.h文件中聲明了它們,方便后續(xù)的修改。那么這里又有一個(gè)疑問就是,我們的游戲應(yīng)該是99的棋盤,而為什么我們創(chuàng)建的數(shù)組卻是1111的呢?
在這里插入圖片描述
在這里可以看到,當(dāng)我們?nèi)ヅ挪檫吔缱鴺?biāo)的時(shí)候,我們按照我們想的應(yīng)該是排查周圍的八個(gè)坐標(biāo),但在這時(shí),若8個(gè)坐標(biāo)都去檢查一遍,就會(huì)面臨越界訪問的問題。則我們就考慮將這個(gè)數(shù)組的行和列都擴(kuò)大2,這樣就可以避免這個(gè)問題。

三.game.h聲明游戲💛

在這里我們要聲明
1.定義的ROW等
2.所用到的自定義函數(shù)
還要注意,由于其他兩個(gè)文件中均需要包含game.h這個(gè)文件,則我們將#include包含在這個(gè)文件中即可。

#define ROW 9
#define COL 9
#define ROWS ROW+2
#define COLS COL+2
#define EASY_COUNT 10

void InitBoard(char board[ROWS][COLS], int rows, int cols,char set);
void DisplayBoard(char board[ROWS][COLS], int row, int col);
void SetMine(char mine[ROWS][COLS], int row, int col);
void FindMine(char mine[ROWS][COLS],char show[ROWS][COLS],int row, int col);
四.game.c實(shí)現(xiàn)游戲💛

這里我們需要實(shí)現(xiàn)的函數(shù)就是一中提到的。
①.需要?jiǎng)?chuàng)建兩個(gè)9*9的二維數(shù)組,一個(gè)用來布置雷的位置(用戶不可見),另一個(gè)用來向玩家展示,在這個(gè)數(shù)組中,每個(gè)位置對(duì)應(yīng)的數(shù)字就應(yīng)該是它周圍所有的雷的個(gè)數(shù)。
②.將兩個(gè)數(shù)組均初始化(這里的實(shí)現(xiàn)過程我們放到game.c中去實(shí)現(xiàn),在這里我們只是用它),我們可以將第一個(gè)隱藏的數(shù)組用 ‘ 0 ’來初始化,而當(dāng)我們?cè)谀硞€(gè)位置布置雷之后,這個(gè)位置就變成1。將第二個(gè)數(shù)組(會(huì)展示給玩家看的)用 ‘ * ’來初始化,當(dāng)用戶排查的不是雷時(shí),將這個(gè)坐標(biāo)表示為周圍所含有的雷的個(gè)數(shù)。
③.在第一個(gè)數(shù)組中埋雷,我們隨機(jī)產(chǎn)生十個(gè)坐標(biāo),將這些坐標(biāo)均改為1,即表示這些坐標(biāo)下有雷。
④.找到雷的位置

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;
	printf("-------掃雷游戲-------\n");
	for (j = 0; j<= col; j++)
	{printf("%d ", j);
	}
	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 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--;
		}
	}
}

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');
}

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("請(qǐng)輸入排雷坐標(biāo)\n");
		scanf("%d %d", &x, &y);
		if (x >= 1 && x<= row && y >= 1 && y<= col)
		{	if (show[x][y] != '*')
			{		printf("該坐標(biāo)被排查過了\n");
				continue;
			}
			if (mine[x][y] == '1')
			{		printf("很遺憾,你被炸死了\n");
				DisplayBoard(mine, ROW,COL);
				break;
			}
			else 
			{		int n = get_mine_count(mine, x, y);
				show[x][y] = n + '0';
				DisplayBoard(show, ROW,COL);
				win++;
			}
		}
		else
		{	printf("輸入的坐標(biāo)非法,請(qǐng)重新輸入\n");
		}
	}
	if (win == (row * col - EASY_COUNT))
	{printf("恭喜你排雷成功\n");
		DisplayBoard(mine, ROW, COL);
	}
}

🐱🐱🐱以上就是我們這篇的全部?jī)?nèi)容啦~希望大家可以學(xué)會(huì),自己敲一遍效果更佳呀!希望大家可以多多關(guān)注我,一起學(xué)習(xí)一起進(jìn)步,我也會(huì)為大家?guī)砀嘤杏玫牟┛停。。?😆 😆 😆

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧


本文標(biāo)題:掃雷游戲【C語言版】(超詳細(xì)~符源代碼~)-創(chuàng)新互聯(lián)
網(wǎng)站URL:http://weahome.cn/article/dddpei.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部