亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

實(shí)現(xiàn)初階掃雷

WilsonLiu95 / 3232人閱讀

摘要:通過(guò)二維數(shù)組的學(xué)習(xí)以及之前學(xué)的一些知識(shí),實(shí)現(xiàn)初階掃雷小游戲。整體思路菜單一把不夠,再來(lái)一把利用二維數(shù)組創(chuàng)建兩個(gè)的棋盤,那為什么不是呢,下面代碼有解釋。中進(jìn)行函數(shù)調(diào)用和部分函數(shù)實(shí)現(xiàn)。

通過(guò)二維數(shù)組的學(xué)習(xí)以及之前學(xué)的一些知識(shí),實(shí)現(xiàn)初階掃雷(9×9)小游戲。

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
?

?整體思路

1?menu菜單(一把不夠,再來(lái)一把)
2?利用二維數(shù)組創(chuàng)建兩個(gè)(11×11)的棋盤,那為什么不是(9×9)呢,下面代碼有解釋。
3?initboard初始化棋盤( char/int )
4 diaplayboard打印棋盤
5 ???????setmine布置雷
6 findmine統(tǒng)計(jì)周圍雷的個(gè)數(shù)
game.c中放函數(shù)實(shí)現(xiàn),game.h中放函數(shù)聲明。test.c中進(jìn)行函數(shù)調(diào)用和部分函數(shù)實(shí)現(xiàn)。
定義宏ROW,COL,ROWS,COLS,方便計(jì)算。

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


1菜單的實(shí)現(xiàn)

#define _CRT_SECURE_NO_WARNINGS 1#include"game.h"void menu(){	printf("*****************************/n");	printf("******    1. play   *********/n");	printf("******    0. exit   *********/n");	printf("*****************************/n");}void test(){	int input = 0;	srand((unsigned int)time(NULL));//布置雷的時(shí)候使用(隨機(jī))	do	{		menu();		printf("請(qǐng)選擇》/n");		scanf("%d", &input);		switch (input)		{		case 1:			game();			break;		case 0:			printf("退出游戲/n");			break;		default:			printf("輸入錯(cuò)誤/n");			break;		}//switch用不慣的也可以用多條件if語(yǔ)句	} while (input);}

2.1?第一個(gè)棋盤
用來(lái)存放布置雷的信息,雷為"1",不是雷為"0",為啥要放字符‘1‘和’0’呢?咱們先往下看

2.2?第二個(gè)棋盤
玩家每走一步,用來(lái)顯示周圍雷個(gè)數(shù)的信息。沒(méi)排過(guò)的雷的坐標(biāo)放"*",排過(guò)的顯示周圍雷的個(gè)數(shù)。

2.3?棋盤選用( char )
1和0本來(lái)是整形,我們可以考慮用int類型來(lái)創(chuàng)建,但由于之后棋盤要用函數(shù)打印,綜合考慮我們就統(tǒng)一用char。1和0換成"0"和"1"。

?

?

接上上面的棋盤創(chuàng)建
當(dāng)出現(xiàn)上圖的情況時(shí),我們?cè)谟?jì)算周圍雷數(shù)的時(shí)候會(huì)產(chǎn)生越界訪問(wèn)。(11×11)就可以避免這個(gè)問(wèn)題。

3初始化棋盤?

選char類型初始化棋盤一個(gè)函數(shù)可以打印兩個(gè)棋盤

//test.cinitboard(mine, ROWS, COLS, "0");initboard(show, ROWS, COLS, "*");
//game.c中的函數(shù)實(shí)現(xiàn)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;		}	}}

?4打印棋盤

//test.cdisplayboard(mine, ROW, COL);//這里我們打印棋盤是(9*9)displayboard(show, ROW, COL);//game.cvoid displayboard(char board[ROWS][COLS], int row, int col){	int i = 0;	int j = 0;	for (i = 0; i <=row; i++)//打印行號(hào)	{	printf("%d ", i);	}	printf("/n");	for (i = 1; i <= row; i++)//打印列號(hào)	{		printf("%d ", i);		for (j = 1; j <= col; j++)		{			printf("%c ", board[i][j]);		}		printf("/n");	}}

?5布置雷(隨機(jī))

//game.h#include#includesrand((unsigned int)time(NULL));//test.c//game.cvoid setmine(char mine[ROWS][COLS], int row, int col){	int count = 10;	while (count)	{		int x = rand() % row + 1;		int y = rand() % col + 1;		if (mine[x][y] == "0")		{			mine[x][y] = "1";			count--;		}	}}

?布置好雷后我們可以再調(diào)用displayboard函數(shù)打印棋盤進(jìn)行查看。

6 找雷(‘0’和‘1’在計(jì)算周圍雷數(shù)的時(shí)候只需要讓周圍的數(shù)轉(zhuǎn)化成整型數(shù)字再相加就行了)

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 0 && x <= row&&y > 0 && y <= col)		{			if (mine[x][y] != "1")			{				int m =getmine(mine,x,y);//用來(lái)計(jì)算周圍雷的數(shù)量				show[x][y] = m+"0";//整型數(shù)字轉(zhuǎn)換成字符數(shù)字				displayboard(show, ROW, COL);				win++;			}			else			{				printf("您被發(fā)往一趟去西天取經(jīng)的航班,祝你旅途愉快/n");				displayboard(mine, ROW, COL);				break;			}		}		else		{			printf("輸入坐標(biāo)非法,請(qǐng)重新輸入/n");		}	}	if (win == row*col - 10)	{		printf("你有當(dāng)工兵的好天賦/n");		displayboard(mine, ROW, COL);	}}

?getmine

int getmine(char mine[ROWS][COLS], int x, int y){	return mine[x - 1][y - 1]+ mine[x - 1][y] + mine[x - 1][y + 1] + mine[x][y - 1] + mine[x][y + 1] + mine[x + 1][y - 1] + mine[x + 1][y] + mine[x + 1][y + 1] - 8 * "0";//這里返回的是int類型,將字符數(shù)字轉(zhuǎn)化為整型數(shù)字(減去字符0):eg:"1"-"0"=1(感興趣的同學(xué)可以去查查ascall碼表)}

?完整代碼展示

game.h

#pragma once#include#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);//打印棋盤void displayboard(char board[ROWS][COLS], int row, int col);void setmine(char mind[ROWS][COLS], int row, int col);void findmine(char mine[ROWS][COLS], char show[ROWS][COLS], int row, int col);#include#include

game.c

#define _CRT_SECURE_NO_WARNINGS 1#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 setmine(char mine[ROWS][COLS], int row, int col){	int count = 10;	while (count)	{		int x = rand() % row + 1;		int y = rand() % col + 1;		if (mine[x][y] == "0")		{			mine[x][y] = "1";			count--;		}	}}int getmine(char mine[ROWS][COLS], int x, int y){	return mine[x - 1][y - 1]+ mine[x - 1][y] + mine[x - 1][y + 1] + mine[x][y - 1] + mine[x][y + 1] + mine[x + 1][y - 1] + mine[x + 1][y] + mine[x + 1][y + 1] - 8 * "0";//這里返回的是int類型,將字符數(shù)字轉(zhuǎn)化為整型數(shù)字(減去字符0):eg:"1"-"0"=1(感興趣的同學(xué)可以去查查ascall碼表)}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 0 && x <= row&&y > 0 && y <= col)		{			if (mine[x][y] != "1")			{				int m =getmine(mine,x,y);				show[x][y] = m+"0";				displayboard(show, ROW, COL);				win++;			}			else			{				printf("您被發(fā)往一趟去西天取經(jīng)的航班,祝你旅途愉快/n");				displayboard(mine, ROW, COL);				break;			}		}		else		{			printf("輸入坐標(biāo)非法,請(qǐng)重新輸入/n");		}	}	if (win == row*col - 10)	{		printf("你有當(dāng)工兵的好天賦/n");		displayboard(mine, ROW, COL);	}}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");	}}

?

test.c

#define _CRT_SECURE_NO_WARNINGS 1#include"game.h"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, "*");	setmine(mine, ROW, COL);	displayboard(mine, ROW, COL);	displayboard(show, ROW, COL);		findmine(mine, show, ROW, COL);		}void test(){	int input = 0;	srand((unsigned int)time(NULL));	do	{		menu();		printf("請(qǐng)選擇》/n");		scanf("%d", &input);		switch (input)		{		case 1:			game();			break;		case 0:			printf("退出游戲/n");			break;		default:			printf("輸入錯(cuò)誤/n");			break;		}	} while (input);}int main(){	test();	return 0;}

今天的內(nèi)容到這里就結(jié)束了,要是覺(jué)得對(duì)你有所幫助的話,不妨點(diǎn)贊關(guān)注一下,這也是我的第一篇博客,你的支持將是我最大的動(dòng)力,最后謝謝大家的觀看,咱們下期見(jiàn)。

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/124779.html

相關(guān)文章

  • C語(yǔ)言初階學(xué)習(xí)——掃雷小游戲(遞歸)

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

    zhonghanwen 評(píng)論0 收藏0
  • 詳細(xì)講解 —— 數(shù)組(C語(yǔ)言初階

    摘要:也可以理解成二維數(shù)組有三個(gè)元素,每個(gè)元素是一個(gè)一維數(shù)組我們可以把二維數(shù)組想象成一個(gè)幾行幾列的數(shù)組但是本質(zhì)上的二維數(shù)組是一列的。數(shù)組名,計(jì)算整個(gè)數(shù)組的大小,內(nèi)部單獨(dú)放一個(gè)數(shù)組名,數(shù)組名表示整個(gè)數(shù)組。數(shù)組名,數(shù)組名表示整個(gè)數(shù)組。 目錄 1. 一維數(shù)組 1.1?數(shù)組的創(chuàng)建和初始化 數(shù)組的創(chuàng)建: 數(shù)...

    Backache 評(píng)論0 收藏0
  • 掃雷小程序的js實(shí)現(xiàn)

    摘要:初學(xué),寫了一個(gè)掃雷程序練練手掃雷規(guī)則及功能掃雷想必大家都不陌生,就是上點(diǎn)擊排雷的小游戲,它的主要規(guī)則有左鍵點(diǎn)擊顯示當(dāng)前格子是否為雷,如果為雷的話,啦,如果不是雷的話,這個(gè)格子會(huì)顯示周圍八個(gè)格子內(nèi)的雷數(shù)量。 初學(xué)javascript,寫了一個(gè)掃雷程序練練手! 掃雷規(guī)則及功能 掃雷想必大家都不陌生,就是windows上點(diǎn)擊排雷的小游戲,它的主要規(guī)則有 1.左鍵點(diǎn)擊顯示當(dāng)前格子是否為雷,如果...

    crelaber 評(píng)論0 收藏0
  • [ C語(yǔ)言 ] 掃雷 ------> 用C語(yǔ)言實(shí)現(xiàn)game2

    摘要:函數(shù)游戲菜單請(qǐng)選擇掃雷游戲退出游戲選擇錯(cuò)誤解析函數(shù)內(nèi)部利用時(shí)間戳,形成隨機(jī)數(shù),主要目的是實(shí)現(xiàn)游戲中地雷的隨機(jī)埋放。 前言 本篇文章使用C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單小游戲---掃雷。(文章最后有完整代碼鏈接) 想必大多數(shù)人都玩過(guò)或者了解過(guò)掃雷的游戲規(guī)則,但是在這里,我們?cè)谝黄鹬販匾幌聮呃椎挠螒蛞?guī)則,也更好...

    I_Am 評(píng)論0 收藏0
  • C語(yǔ)言實(shí)現(xiàn)入門級(jí)小游戲——掃雷

    摘要:上一期咱們用語(yǔ)言實(shí)現(xiàn)了三子棋的小游戲語(yǔ)言實(shí)現(xiàn)三子棋今天我們?cè)賮?lái)寫個(gè)掃雷的游戲,說(shuō)起掃雷,相信大家都不陌生,可能許多朋友還是玩掃雷的高手。 ? ? ?上一期咱們用C語(yǔ)言實(shí)現(xiàn)了三子棋的小游戲? C語(yǔ)言實(shí)現(xiàn)三子棋? ? ? ?今天我們?cè)賮?lái)寫個(gè)掃雷的游戲,說(shuō)起掃雷,相信大家都不陌生,可能許多朋友還是...

    nevermind 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<