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

資訊專欄INFORMATION COLUMN

C語(yǔ)言實(shí)現(xiàn)初級(jí)掃雷

Rango / 1685人閱讀

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

文章目錄

一、游戲簡(jiǎn)介

二、代碼實(shí)現(xiàn)

1.調(diào)用test函數(shù)

2.打印菜單(menu函數(shù))

3.game函數(shù)

4.初始化(Initmine函數(shù))

5.布置雷(SetMine函數(shù))

6.排雷(FindMime函數(shù))?

?三、總代碼

1.game.h

2.game.c

3.test.c

一、游戲簡(jiǎn)介

一款小游戲,一張棋盤(可以自己設(shè)計(jì),9*9 , 12*12 , 15*15? 都可以 ,?或是添加一些自己喜歡的元素)布滿許多未知是雷或是安全的格子,輸入坐標(biāo),若觸雷,游戲結(jié)束,反之,顯示周圍8個(gè)格子的雷的個(gè)數(shù)

二、代碼實(shí)現(xiàn)

1.首先調(diào)用test?函數(shù)

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

2.打印菜單,進(jìn)行選擇

void menu(){	printf("***********************/n");	printf("*****  1. play     ****/n");	printf("*****  0. exit     ****/n");	printf("***********************/n");}

3.實(shí)現(xiàn)game函數(shù)

void game(){	//創(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);	//布置雷	SetMine(mine, ROW, COL);	DisplayBoard(show, ROW, COL);	//DisplayBoard(mine, ROW, COL);	//排雷	FindMine(mine, show, ROW, COL);}

4.初始化棋盤及打?。梢园凑兆约旱呐d趣自己設(shè)計(jì))

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;	//列號(hào)的打印	for (i = 0; i <= col; i++)	{		printf("%d ", i);	}	printf("/n");	for (i = 1; i <= row; i++)	{		printf("%d ", i);//打印行號(hào)		for (j = 1; j <= col; j++)		{			printf("%c ", board[i][j]);		}		printf("/n");	}}

5.布置雷

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

6.排雷

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):>");		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			{				//計(jì)算x,y坐標(biāo)周圍有幾個(gè)雷				int n = get_mine_count(mine, x, y);				show[x][y] = n + "0";				DisplayBoard(show, row, col);				win++;			}		}		else		{			printf("輸入坐標(biāo)非法,無(wú)法排雷,請(qǐng)重新輸入/n");		}	}	if (win == row * col - EASY_COUNT)	{		printf("恭喜你,排雷成功/n");		DisplayBoard(mine, row, col);	}}

排雷內(nèi)部的函數(shù),用來(lái)在show棋盤上顯示雷的個(gè)數(shù)?

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";}

三、總代碼

1.game.h

#pragma once//頭文件的包含#include #include #include //符號(hào)的聲明#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);//排查雷void FindMine(char mine[ROWS][COLS], char show[ROWS][COLS], int row, int col);

2.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 DisplayBoard(char board[ROWS][COLS], int row, int col){	//1~9	int i = 0;	int j = 0;	//列號(hào)的打印	for (i = 0; i <= col; i++)	{		printf("%d ", i);	}	printf("/n");	for (i = 1; i <= row; i++)	{		printf("%d ", i);//打印行號(hào)		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;	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";}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):>");		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			{				//計(jì)算x,y坐標(biāo)周圍有幾個(gè)雷				int n = get_mine_count(mine, x, y);				show[x][y] = n + "0";				DisplayBoard(show, row, col);				win++;			}		}		else		{			printf("輸入坐標(biāo)非法,無(wú)法排雷,請(qǐng)重新輸入/n");		}	}	if (win == row * col - EASY_COUNT)	{		printf("恭喜你,排雷成功/n");		DisplayBoard(mine, row, col);	}}

3.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(){	//創(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);	//布置雷	SetMine(mine, ROW, COL);	DisplayBoard(show, ROW, COL);	//DisplayBoard(mine, ROW, COL);	//排雷	FindMine(mine, show, ROW, COL);}void test(){	int input = 0;	srand((unsigned int)time(NULL));	do	{		menu();		printf("請(qǐng)選擇:>");		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;}

這只是掃雷的基礎(chǔ)版,還有很多功能沒(méi)有實(shí)現(xiàn),我將會(huì)繼續(xù)改進(jìn),感謝觀看

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

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

相關(guān)文章

  • C語(yǔ)言學(xué)習(xí)筆記—P12(掃雷游戲<初級(jí)>+圖解+題例)

    目錄 ?前言:●由于作者水平有限,文章難免存在謬誤之處,敬請(qǐng)讀者斧正,俚語(yǔ)成篇,懇望指教! ???????? ? ? ?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ——By 作者:新曉·故知 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ...

    lykops 評(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
  • C/C++游戲項(xiàng)目詳細(xì)教學(xué):《掃雷

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

    meteor199 評(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

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

0條評(píng)論

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