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

資訊專欄INFORMATION COLUMN

C語言學習筆記—P12(掃雷游戲<初級>+圖解+題例)

lykops / 2164人閱讀

目錄

?前言:●由于作者水平有限,文章難免存在謬誤之處,敬請讀者斧正,俚語成篇,懇望指教!

???????? ? ? ?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ——By 作者:新曉·故知

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? 2021.11.11

?掃雷游戲(初級)編寫:

?創(chuàng)建文件項目:

菜單打?。簍est.c

?打印棋盤:

?布置雷:

?字符±(*/)ASCII碼 " 0 "=字符

?掃雷游戲(初級)完整代碼:

1.創(chuàng)建頭文件:game.h??

2.創(chuàng)建源文件:? game.c?

3.創(chuàng)建源文件: test.c

4.按照提示運行程序即可?

運行結果示例:

?題例:

遞歸例1:

?遞歸例題2:

?遞歸例題3:

?遞歸例題4:

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

? ? ? ? ? ? ? ? ? ??? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?——Since?新曉-故知

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? 2021.11.11



?前言:
●由于作者水平有限,文章難免存在謬誤之處,敬請讀者斧正,俚語成篇,懇望指教!

???????? ? ? ?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ——By 作者:新曉·故知

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? 2021.11.11


?掃雷游戲(初級)編寫:

?創(chuàng)建文件項目:

菜單打?。簍est.c

菜單打印  test.c#includevoid menu(){	printf("******掃雷游戲(初級)C語言版********/n");	printf("*************************************/n");	printf("*****  1.Play(輸入1:開始游戲)*****/n");	printf("*****  0.Exit(輸入0:退出游戲)*****/n");	printf("*************************************/n");	printf("/n");	printf("              ——By 作者:新曉·故知/n");}void game(){	printf("掃雷/n");}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);}int main(){	test();	return 0;}

?

?打印棋盤:

1.game.h頭文件的包含#include //#include //#include 符號的聲明#define ROW 9#define COL 9#define ROWS ROW+2#define COLS COL+2//#define EASY_COUNT 10函數(shù)的聲明初始化棋盤void InitBoard(char board[ROWS][COLS], int rows, int cols, char set);打印棋盤void DisplayBoard(char board[ROWS][COLS], int row, int col);2.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){	//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");	}}3.test.c#include "game.h"void menu(){	printf("******掃雷游戲(初級)C語言版********/n");	printf("*************************************/n");	printf("*****  1.Play(輸入1:開始游戲)*****/n");	printf("*****  0.Exit(輸入0:退出游戲)*****/n");	printf("*************************************/n");	printf("/n");	printf("              ——By 作者:新曉·故知/n");}void game(){	 //printf("掃雷/n");	 //創(chuàng)建數(shù)組	char mine[ROWS][COLS] = { 0 };//存放布置好的雷的信息	char show[ROWS][COLS] = { 0 };//存放排查出的雷的信息	//初始化mine數(shù)組為全"0"	InitBoard(mine, ROWS, COLS, "0");	//初始化show數(shù)組為全"*"	InitBoard(show, ROWS, COLS, "*");	打印棋盤	DisplayBoard(mine, ROW, COL);	DisplayBoard(show, ROW, COL);}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);}int main(){	test();	return 0;}

??

?

?布置雷:

布置雷:1.game.h//頭文件的包含#include #include //#include //符號的聲明#define ROW 9#define COL 9#define ROWS ROW+2#define COLS COL+2//#define EASY_COUNT 10//函數(shù)的聲明//初始化棋盤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);2.gamer.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){	//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");	}}void SetMine(char mine[ROWS][COLS], int row, int col){	int count = 10; 此處控制布置雷的個數(shù)!	while (count)	{		int x = rand() % row + 1;		int y = rand() % col + 1;		if (mine[x][y] == "0")		{			mine[x][y] = "1";			count--;		}	}}3.test.c#include "game.h"void menu(){	printf("******掃雷游戲(初級)C語言版********/n");	printf("*************************************/n");	printf("*****  1.Play(輸入1:開始游戲)*****/n");	printf("*****  0.Exit(輸入0:退出游戲)*****/n");	printf("*************************************/n");	printf("/n");	printf("              ——By 作者:新曉·故知/n");}void game(){	 //printf("掃雷/n");	 //創(chuàng)建數(shù)組	char mine[ROWS][COLS] = { 0 };//存放布置好的雷的信息	char show[ROWS][COLS] = { 0 };//存放排查出的雷的信息	//初始化mine數(shù)組為全"0"	InitBoard(mine, ROWS, COLS, "0");	//初始化show數(shù)組為全"*"	InitBoard(show, ROWS, COLS, "*");	打印棋盤	//DisplayBoard(mine, ROW, COL); //真正進行排雷會屏蔽此語句,此語句可查看雷的位置坐標	//DisplayBoard(show, ROW, COL); //真正進行排雷會屏蔽此語句,此語句可查看雷的位置坐標	//布置雷	SetMine(mine, ROW, COL);	DisplayBoard(mine, ROW, COL);}void test(){	int input = 0;	srand((unsigned int)time(NULL));//時間隨機生成數(shù)	do	{		menu();		printf("請選擇:>");		scanf("%d", &input);		switch (input)		{		case 1:			//掃雷			game();			break;		case 0:			printf("退出游戲!/n");			break;		default:			printf("選擇錯誤,請重新輸入!/n");			break;		}	} while (input);}int main(){	test();	return 0;}

?

?知識點:字符±(*/)ASCII碼 " 0 "=字符

?

?

?

?掃雷游戲(初級)完整代碼:

1.創(chuàng)建頭文件:game.h??

代碼如下:

game.h//頭文件的包含#include #include #include //符號的聲明#define ROW 9#define COL 9#define ROWS ROW+2#define COLS COL+2#define EASY_COUNT 10  //此處控制布置雷的個數(shù),最終版將會設置成時間隨機生成雷的個位數(shù)?。?!//函數(shù)的聲明//初始化棋盤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);

2.創(chuàng)建源文件:? game.c?

代碼如下:

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){	//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");	}}void SetMine(char mine[ROWS][COLS], int row, int col){	int count = EASY_COUNT;//此處控制布置雷的個數(shù),最終版將會設置成時間隨機生成雷的個位數(shù)	while (count)	{		int x = rand() % row + 1;		int y = rand() % col + 1;		if (mine[x][y] == "0")		{			mine[x][y] = "1";			count--;		}	}}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"; //n + "0" 可以得到字符n ?。?!}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("請輸入要排查雷的坐標:>");		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坐標周圍有幾個雷				int n = get_mine_count(mine, x, y);				show[x][y] = n + "0";                  //n + "0" 可以得到字符n ?。?!				DisplayBoard(show, row, col);				win++;			}		}		else		{			printf("輸入坐標非法,無法排雷,請重新輸入!/n");		}	}	if (win == row * col - EASY_COUNT)	{		printf("恭喜你,排雷成功!/n");		DisplayBoard(mine, row, col);	}}

3.創(chuàng)建源文件: test.c

代碼如下:

test.c#define  _CRT_SECURE_NO_WARNINGS#include "game.h"void menu(){	printf("******掃雷游戲(初級)C語言版********/n");	printf("*************************************/n");	printf("*****  1.Play(輸入1:開始游戲)*****/n");	printf("*****  0.Exit(輸入0:退出游戲)*****/n");	printf("*************************************/n");	printf("/n");	printf("              ——By 作者:新曉·故知/n");}void game(){	 //printf("掃雷/n");	 //創(chuàng)建數(shù)組	char mine[ROWS][COLS] = { 0 };//存放布置好的雷的信息	char show[ROWS][COLS] = { 0 };//存放排查出的雷的信息	//初始化mine數(shù)組為全"0"	InitBoard(mine, ROWS, COLS, "0");	//初始化show數(shù)組為全"*"	InitBoard(show, ROWS, COLS, "*");	打印棋盤	//DisplayBoard(mine, ROW, COL); //真正進行排雷會屏蔽此語句,此語句可查看雷的位置坐標	//DisplayBoard(show, ROW, COL); //真正進行排雷會屏蔽此語句,此語句可查看雷的位置坐標	//布置雷	SetMine(mine, ROW, COL);	//DisplayBoard(mine, ROW, COL);	//DisplayBoard(mine, ROW, COL);	//排雷	FindMine(mine, show, ROW, COL);}void test(){	int input = 0;	srand((unsigned int)time(NULL));//時間隨機生成數(shù)	do	{		menu();		//printf("請選擇:>");		printf("請選擇游戲開始或結束:>/n");		printf("#輸入數(shù)字1代表游戲開始,輸入數(shù)字0代表游戲結束#/n");		printf("#坐標輸入方式:數(shù)字-空格鍵-數(shù)字#/n");		scanf("%d", &input);		switch (input)		{		case 1:			//掃雷			game();			break;		case 0:			printf("退出游戲!/n");			break;		default:			printf("選擇錯誤,請重新輸入!/n");			break;		}	} while (input);}int main(){	test();	return 0;}

4.按照提示運行程序即可?



運行結果示例:

使用說明:
(1)紅框標記語句可控制“雷”的位置坐標的顯示與隱藏:


(2)紅框標記語句可更改“雷”的數(shù)量 :

因本程序設置棋盤大小為9*9,故此處數(shù)量區(qū)間為[0,81],

(3)紅框標記語句可進行棋盤大小更改 :

將數(shù)字9更改即可,數(shù)字9代表棋盤操作大小,ROW+2代表棋盤總大小,

即操作棋盤大小為9*9,總棋盤大?。由贤饪颍?1*11

?

?題例:

遞歸例1:

#include int Fun(int n){    if (n == 5)        return 2;    else        return 2 * Fun(n + 1);}int main(){    int ret = Fun(2);    printf("%d/n", ret);    return 0;}

?

?

?遞歸例題2:

//編寫一個函數(shù) reverse_string(char* string)(遞歸實現(xiàn))//實現(xiàn):將參數(shù)字符串中的字符反向排列,不是逆序打印。//要求:不能使用C函數(shù)庫中的字符串操作函數(shù)。//比如 ://char arr[] = "abcdef";//逆序之后數(shù)組的內(nèi)容變成:fedcba#include int my_strlen(char* s){	int count = 0;	while (*s != "/0")	{		count++;		s++;	}	return count;}//[a b c d e f g /0]遞歸版本void reverse_string(char* arr){	int len = my_strlen(arr);	char tmp = *arr;	*arr = *(arr + len - 1);	*(arr + len - 1) = "/0";	if(my_strlen(arr+1)>1)		reverse_string(arr+1);		*(arr + len - 1) = tmp;}int main(){	char arr[] = "abcdefg";	reverse_string(arr);	printf("%s/n", arr);//fedcba	return 0;}

參數(shù)用指針的形式void reverse_string(char* str){	char* left = str;	char* right = str + my_strlen(str) - 1;	while (left

?

參數(shù)是數(shù)組的形式void reverse_string(char arr[]){	int left = 0;	int right = my_strlen(arr)-1;	//交換	while (left

?遞歸例題3:

寫一個遞歸函數(shù)DigitSum(n),輸入一個非負整數(shù),返回組成它的數(shù)字之和例如,調(diào)用DigitSum(1729),則應該返回1 + 7 + 2 + 9,它的和是19輸入:1729,輸出:19int DigitSum(size_t n){	if (n <= 9)		return n;	else		return DigitSum(n / 10) + n % 10;}int main(){	size_t num = 0;	scanf("%u", &num);	int ret = DigitSum(num);	printf("%d/n", ret);	return 0;}

?

?遞歸例題4:

double Pow(int n, int k){	if (k == 0)		return 1;	else if (k > 0)		return n * Pow(n, k - 1);	else		return 1.0 / Pow(n, -k);}int main(){	int n = 0;	int k = 0;	scanf("%d %d", &n, &k);	double ret = Pow(n, k);	printf("%lf/n", ret);	return 0;}

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


? ? ? ? ? ? ? ? ? ??? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?——Since?新曉-故知

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? 2021.11.11

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

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

相關文章

  • C語言學習筆記—P17(函數(shù)棧幀的創(chuàng)建與銷毀<超詳解版>+圖解+題例

    摘要:目錄前言由于作者水平有限,文章難免存在謬誤之處,敬請讀者斧正,俚語成篇,懇望指教前言由于作者水平有限,文章難免存在謬誤之處,敬請讀者斧正,俚語成篇,懇望指教作者新曉故知作者新曉故知那些代碼背后的故事那些代碼背后的故事通過 目錄 前言:●由于作者水平有限,文章難免存在謬誤之處,敬請讀者斧正,俚...

    gnehc 評論0 收藏0
  • C語言學習筆記—P15(指針<初階>+圖解+題例

    摘要:變量占用個字節(jié)的空間,這里是將的個字節(jié)的第一個字節(jié)的地址存放在變量中,就是一個之指針變量。是指針變量作者新曉故知總結指針變量,用來存放地址的變量。 目錄 前言:●由于作者水平有限,文章難免存在謬誤之處,敬請讀者斧正,俚語成篇,懇望指教! ???????? ? ? ?? ? ? ? ? ? ...

    weknow619 評論0 收藏0
  • C語言實現(xiàn)初級掃雷

    摘要:文章目錄一游戲簡介二代碼實現(xiàn)調(diào)用函數(shù)打印菜單函數(shù)函數(shù)初始化函數(shù)布置雷函數(shù)排雷函數(shù)三總代碼一游戲簡介一款小游戲,一張棋盤可以自己設計,,,都可以,或是添加一些自己喜歡的元素布滿許多未知是雷或是安全的格子,輸入坐標,若觸雷,游戲結束,反之,顯 文章目錄 一、游戲簡介 二、代碼實現(xiàn) 1.調(diào)用tes...

    Rango 評論0 收藏0
  • C/C++游戲項目詳細教學:《掃雷

    摘要:掃雷最原始的版本可以追溯到年一款名為方塊的游戲。兩年后,湯姆安德森在的基礎上又編寫出了游戲地雷,由此奠定了現(xiàn)代掃雷游戲的雛形。年,微軟公司的羅伯特杜爾和卡特約翰遜兩位工程師在系統(tǒng)上加載了該游戲,掃雷游戲才正式在全世界推廣開來。 掃雷最原始的版本可以追溯到1973年一款名為方塊的游戲。 不久,...

    meteor199 評論0 收藏0
  • C語言實現(xiàn)入門級小游戲——掃雷

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

    nevermind 評論0 收藏0

發(fā)表評論

0條評論

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