国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

C/C++游戲項目詳細教學:《掃雷》

meteor199 / 1078人閱讀

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

掃雷最原始的版本可以追溯到1973年一款名為“方塊”的游戲。

不久,“方塊”被改寫成了游戲“Rlogic”。在“Rlogic”里,玩家的任務是作為美國海軍陸戰隊隊員,為指揮中心探出一條沒有地雷的安全路線,如果路全被地雷堵死就算輸。兩年后,湯姆·安德森在“Rlogic”的基礎上又編寫出了游戲“地雷”,由此奠定了現代掃雷游戲的雛形。

1981年,微軟公司的羅伯特·杜爾和卡特·約翰遜兩位工程師在Windows3.1系統上加載了該游戲,掃雷游戲才正式在全世界推廣開來。

這款游戲的玩法是在一個9*9(初級),16*16(中級),16*30(高級),或自定義大小的方塊矩陣中隨機布置一定量的地雷(初級為10個,中級為40個,高級為99個)。由玩家逐個翻開方塊,以找出所有地雷為最終游戲目標。如果玩家翻開的方塊有地雷,則游戲結束。?

我們今天就來自己寫《掃雷》

這個項目并不是很難,今天就和大家從頭到尾詳細的講一遍,大家一定要好好看好好學!

行吧,開始了

我們今天用的是Cpp來寫,但不是用Windows來創建窗口,而是用他的遠房表親EasyX圖形庫來創建窗口,因為用圖形庫會簡單很多,剛學C的也可以聽懂,而且C/C++不分家,沒有什么問題,OK,我們現在開始寫代碼,今天我就把頭文件也分享出來了,主要是教大家如何去調用圖形庫。(注:沒有EasyX圖形庫的可以去官網下載,也可以進群直接下載)

首先是我們的頭文件以及一些宏定義

#include#include//包含圖形庫頭文件#define ROW 9 //行#define COL 9 //列  共81個格子#define MINE_NUM  18//雷的數量#define IMG_SIZE 40

初始化函數,也是我們的老朋友了

void GameInit(){	//1,創建窗口 一行有九張圖片每張圖片40px,	initgraph(IMG_SIZE*ROW, IMG_SIZE*COL,SHOWCONSOLE);	//加載圖片(賦值) load加載 第一個參數,存儲圖片的變量 錯誤:字符集問題	for (int i = 0; i < 12; i++)	{		char file[20] = "";		sprintf(file, "./image/%d.jpg", i);		loadimage(&img[i], file, IMG_SIZE, IMG_SIZE);	}	//布雷	for (int i = 0; i < MINE_NUM; )	{		//排除輔助區		int row = rand() % ROW+1;//0-8  1-9		int col = rand() % COL+1;		if (mine[row][col] == 0)		{			mine[row][col] = 9;			i++;		}	}	//雷所在的九宮格,要加1(雷除外)	for (int i = 1; i < ROW+1; i++)	{		for (int k = 1; k < COL+1; k++)		{			if (mine[i][k] == 9)			{				//遍歷雷的九宮格 細心				for (int a = i - 1; a <= i + 1; a++)				{					for (int b = k - 1; b <= k + 1; b++)					{						//非雷的格子加1						if (mine[a][b] != 9)						{							mine[a][b]++;						}					}				}			}		}	}	//加密 開始時全部為掩碼圖	for (int i = 1; i < ROW + 1; i++)	{		for (int k = 1; k < COL + 1; k++)		{			mine[i][k] += 20;		}	}}

鼠標信息處理函數

void MouseEvent(){	//檢測是否有鼠標消息	if (MouseHit())	{		//獲取鼠標消息,坐標,左鍵還是右鍵		MOUSEMSG msg = GetMouseMsg();		//把坐標轉化成數組下標		openr = msg.y / IMG_SIZE+1;		openc = msg.x / IMG_SIZE+1;		//判斷是左鍵還是右鍵		switch (msg.uMsg)		{		case WM_LBUTTONDOWN:			//如果格子沒有打開,就打開格子,否則不做處理			if (mine[openr][openc] > 9)			{				mine[openr][openc] -= 20;				OpenNull(openr,openc);				num++;			}			break;		case WM_RBUTTONDOWN:			//標記			if (mine[openr][openc] > 9 && mine[openr][openc] <= 29)			{				mine[openr][openc] += 20;			}			else			{				mine[openr][openc] -= 20;			}			break;		}	}}

進行遞歸操作,判斷鼠標點擊的地方

//遞歸打開所有空白,以及空白周圍的數字void OpenNull(int row,int col){	//點擊的是空白才能打開	if (mine[row][col] == 0)	{		for (int i = row - 1; i <= row + 1; i++)		{			for (size_t k = col-1; k <= col+1; k++)			{				//如果為空或者不是雷就打開				if ((mine[i][k] == 20 || mine[i][k] != 29)&& mine[i][k]>9)				{					mine[i][k] -= 20;					num++;					OpenNull(i, k);				}			}		}	}}

游戲的輸贏判斷函數,注意理清邏輯

void Jude(){	//判斷輸	if (mine[openr][openc] == 9)	{		int isok = MessageBox(GetHWnd(), "是否繼續!", "點到雷了", MB_OKCANCEL);		if (isok == IDOK)		{			mine[openr][openc] += 20;		}		else		{			exit(666);		}	}	//判斷贏	if (num == ROW*COL - MINE_NUM)	{		int isok = MessageBox(GetHWnd(), "是否繼續!", "點到雷了", MB_OKCANCEL);		if (isok == IDOK)		{			num = 0;			GameInit();		}		else		{			exit(666);		}	}}

最后就是我們的主函數了

int main(){	GameInit();	show();	//循環處理游戲邏輯	while (1)	{		MouseEvent();		GameDraw();		Jude();	}		getchar();	return 0;}

經典游戲《掃雷》完成,OK,簡單總結一下,代碼很簡單,邏輯也不難,重要是大家一定要自己動手去做,這是毋庸置疑的,編程沒有捷徑,只有不斷的學習熟練,加強自己的能力,有條件的話找個老師的話效果會更好,我也特意找了一個朋友叫他把一些關于《掃雷》的教學視頻發給我,大家可以去我的主頁上查看,我也希望下面的視頻可以更好的幫助同學們掌握這個項目,好了,希望大家可以在這里得到自己想要的知識以及快樂吧,也希望大家可以給UP主一個關注,非常感謝大家了!!!

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

后續UP主還會發布更多的項目源碼以及學習資料,希望大家可以持續關注,有什么問題可以回帖留言,我盡量回答。想要C/C++學習資料以及其他項目的源碼的可以加群【1083227756】了解。想要對程序員的未來發展有興趣的也可加群閑聊。也可以關注微信公眾號:【狐貍的編碼時光】,希望和大家一起學習進步!!!


點擊下方鏈接進群更快拿到學習資料以及項目素材?

進群領取學習資料以及項目源碼素材包https://jq.qq.com/?_wv=1027&k=sttR3REFhttps://jq.qq.com/?_wv=1027&k=sttR3REF
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/123179.html

相關文章

  • 為了沒Python的小伙伴兒,我學會了程序打包!【保姆級詳細教學

    摘要:如果覺得安裝太慢,還可以加入國內鏡像下載我比較習慣用豆瓣的。之前的文章有講過滴常用源鏡像清華阿里云中國科技大學華中理工大學山東理工大學豆瓣在里輸入打包成的命令。 ?導語 這篇文章是我之前很想寫的,但是拖到了今天! 咳咳咳......主要是有粉絲讓我安排一下!寵粉.jpg 很多新手小伙伴兒是...

    Euphoria 評論0 收藏0
  • 為了沒Python的小伙伴兒,我學會了程序打包。【保姆級詳細教學

    摘要:如果覺得安裝太慢,還可以加入國內鏡像下載我比較習慣用豆瓣的。之前的文章有講過滴常用源鏡像清華阿里云中國科技大學華中理工大學山東理工大學豆瓣在里輸入打包成的命令。 ??導語 這篇文章是我之前很想寫的,但是拖到了今天! 咳咳咳......主要是有粉絲讓我安排一下!寵粉.jpg 很多新手小伙伴兒...

    Java_oldboy 評論0 收藏0
  • C語言實現入門級小游戲——掃雷

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

    nevermind 評論0 收藏0
  • C語言入門》掃雷游戲C語言實現

    摘要:條消息語言入門三子棋語言實現詳細版的博客博客條消息語言入門三子棋語言實現詳細版的博客博客我們將雷盤初始化為統一的符號。 目錄 1.原理簡介 2.分布目標及代碼實現 3.總結 1.原理簡介 ?首先我們需要一個空的雷盤,在其中隨機埋入十枚雷,當我們排這顆雷時,若此位置為雷,則游戲失敗,若不...

    caige 評論0 收藏0
  • C語言學習筆記—P12(掃雷游戲<初級>+圖解+題例)

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

    lykops 評論0 收藏0

發表評論

0條評論

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