国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務(wù)器之家 - 編程語言 - C# - 利用C#編寫掃雷游戲(附源碼)

利用C#編寫掃雷游戲(附源碼)

2022-03-07 13:30江湖逍遙 C#

掃雷游戲相信不用給大家過多介紹,大家基本都玩過,下面這篇文章主要給大家介紹了關(guān)于如何利用C#編寫掃雷游戲的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下

前言

翻看了下以前大學(xué)學(xué)習(xí)的一些小項(xiàng)目,突然發(fā)現(xiàn)有個(gè)項(xiàng)目比較有意思,覺得有必要把它分享出來。當(dāng)然現(xiàn)在看來,里面有很多的不足之處,但因博主現(xiàn)在已經(jīng)工作,沒有時(shí)間再去優(yōu)化。這個(gè)項(xiàng)目就是利用c#編寫一個(gè)windows系統(tǒng)下的掃雷小游戲。

首先講下掃雷小游戲的玩法:

(1)掃雷就是要把所有非地雷的格子揭開即勝利;踩到地雷格子就算失敗。

(2)當(dāng)點(diǎn)開的格子不是地雷區(qū)域的時(shí)候,該格子會(huì)顯示一個(gè)數(shù)字,該數(shù)字表示的含義就是該格子周邊有多少個(gè)地雷。

(3)同時(shí)點(diǎn)開的如果非地雷的格子,周邊連貫的非地雷區(qū)域都會(huì)自動(dòng)被掃描打開,直到遇到旁邊有雷區(qū)的時(shí)候停止。

(4)當(dāng)你判斷出格子是地雷的時(shí)候,你可以使用鼠標(biāo)右鍵將該塊方格標(biāo)記為雷區(qū)。當(dāng)不確定的時(shí)候,你可標(biāo)記個(gè)問號(hào)以待確定。

下面來說下我大學(xué)時(shí)候?qū)崿F(xiàn)這個(gè)掃雷小游戲的思路:

(1)因?yàn)槔讌^(qū)是一個(gè)個(gè)格子聯(lián)合組成的,那我們可以使用winform程序自帶的系統(tǒng)按鈕控件button來實(shí)現(xiàn)雷區(qū)方格。

(2)代表雷區(qū)方格的button按鈕需要實(shí)現(xiàn)下面幾個(gè)事件:鼠標(biāo)左鍵點(diǎn)擊掃雷事件,鼠標(biāo)右鍵點(diǎn)擊標(biāo)記雷區(qū)事件,鼠標(biāo)右鍵點(diǎn)擊標(biāo)記問號(hào)區(qū)域事件。

(3)為了更好的實(shí)現(xiàn)游戲的可玩性,增加一個(gè)自由設(shè)置地雷數(shù)量的小功能,可自行設(shè)置雷區(qū)包含的地雷數(shù)量,設(shè)置完成后,自動(dòng)刷新界面,重新部署地雷。

(4)我們將雷區(qū)的方格存儲(chǔ)在一個(gè)全局的二維數(shù)組中,form窗體在初始化的時(shí)候,自動(dòng)生成面板區(qū)域的button按鈕列表。

(5)為了實(shí)現(xiàn)每次玩游戲的時(shí)候,地雷分布不一致,我們?cè)赽utton列表生成后。隨機(jī)抽取出某些button按鈕作為地雷分布點(diǎn),并記錄該button的雷區(qū)屬性為含有地雷。

(6)算法中的關(guān)鍵:遞歸算法計(jì)算雷區(qū)。當(dāng)點(diǎn)擊某個(gè)方格的時(shí)候,如果該方格是雷區(qū),則直接game over,如果不是的話,則我們需要一個(gè)算法去計(jì)算旁邊區(qū)域的地雷數(shù)量,以及旁邊區(qū)域沒有地雷的區(qū)域,當(dāng)沒有地雷的區(qū)域連成一片的時(shí)候,我們需要使用遞歸算法,去查找二維數(shù)組,找到對(duì)應(yīng)的連片非雷區(qū),將之打開。

(7)如何設(shè)置方格的狀態(tài):當(dāng)鼠標(biāo)左鍵點(diǎn)擊的方塊區(qū)域非雷區(qū)的時(shí)候,我們將button按鈕的屬性設(shè)置為disabled即可呈現(xiàn)打開的狀態(tài)。當(dāng)鼠標(biāo)左鍵打開的方格是雷區(qū)時(shí)候,此時(shí)我們可以將所有地雷區(qū)域塊的button的背景圖設(shè)置為地雷圖片,并播放相應(yīng)的爆炸音效,彈出游戲終止界面即可。當(dāng)鼠標(biāo)右鍵標(biāo)記雷區(qū)或者待確定區(qū)域的時(shí)候,只需要更改button的背景圖即可。當(dāng)然上述所有點(diǎn)擊操作,都得判斷button方格區(qū)域當(dāng)前的狀態(tài)值:初始化狀態(tài)、已標(biāo)記為待確定狀態(tài)、已標(biāo)記為雷區(qū)。

游戲的最終效果圖如下:

利用C#編寫掃雷游戲(附源碼)

我們下面來剖析下幾個(gè)關(guān)鍵點(diǎn),因?yàn)榇a量比較多,我就不全部詳細(xì)剖析了。

首先我們定義一個(gè)leibutton類,這個(gè)類繼承于系統(tǒng)控件button,增加x,y,youlei三個(gè)字段,x表示二維數(shù)組的第一個(gè)索引,y表示二維數(shù)組的第二個(gè)索引值,youlei用于標(biāo)記button方塊區(qū)域按鈕的狀態(tài)(0表示無雷,1表示有雷)。同時(shí)我們使用button按鈕類自帶的一個(gè)tag屬性標(biāo)記該方塊區(qū)域是否被翻開。

具體定義如下:

利用C#編寫掃雷游戲(附源碼)

然后我們?cè)诖绑w對(duì)象form類中定義一些常用的變量之類,如下圖,都有相應(yīng)注釋

利用C#編寫掃雷游戲(附源碼)

下面我們來看下生成button的二維數(shù)組,即生成雷區(qū)的button列表。我們需要在form中添加groupbox組件,然后將動(dòng)態(tài)生成的button列表添加到這個(gè)groupbox組件中。生成button的二維數(shù)組方法體如下:

利用C#編寫掃雷游戲(附源碼)

生成完button列表后,我們就開始部署地雷了,地雷隨機(jī)部署到button列表中,部署地雷的方法如下:

利用C#編寫掃雷游戲(附源碼)

到了這一步,我們就應(yīng)該將雷區(qū)的界面渲染出來了,這時(shí)候我們可以將上面兩個(gè)方法放入窗體的form_load事件中即可渲染出游戲界面。如下所示

利用C#編寫掃雷游戲(附源碼)

我們繼續(xù),下面寫掃雷的算法,當(dāng)鼠標(biāo)左鍵點(diǎn)開某個(gè)方格的時(shí)候,如果該方格不是雷區(qū),那我們需要計(jì)算該方格周邊的地雷數(shù)量,計(jì)算方法如下:

利用C#編寫掃雷游戲(附源碼)

下面是個(gè)遞歸計(jì)算的核心算法,非常關(guān)鍵。當(dāng)我們點(diǎn)開的方格非雷區(qū)的時(shí)候,周邊連片的非雷區(qū)的方格塊會(huì)被打開。這一塊的核心算法參考下列代碼,row表示行,col表示列

利用C#編寫掃雷游戲(附源碼)

下面我們來添加鼠標(biāo)的點(diǎn)擊事件,我這邊采用的是bt_mouseup事件來處理。點(diǎn)擊后,我們首先判斷游戲是否結(jié)束,如果沒結(jié)束,則進(jìn)行下列操作,獲取到被點(diǎn)擊的按鈕的x,y值以及點(diǎn)擊事件按下的鍵值(判斷按下的是鼠標(biāo)左鍵還是右鍵)。x,y值獲取到了,我們就可以到button二維數(shù)組中找到對(duì)應(yīng)元素。

利用C#編寫掃雷游戲(附源碼)

假如點(diǎn)擊的是鼠標(biāo)左鍵,則我們進(jìn)行掃雷操作,具體的代碼如下:

利用C#編寫掃雷游戲(附源碼)

如果按下的是鼠標(biāo)右鍵,則是標(biāo)記方塊是雷區(qū)或者待確定區(qū)域,具體代碼如下:

利用C#編寫掃雷游戲(附源碼)

最后再給出一個(gè)判斷是否掃雷完畢的方法。

利用C#編寫掃雷游戲(附源碼)

掃雷游戲的設(shè)計(jì)大概到此結(jié)束,中間還有很多可以優(yōu)化的地方,比如將掃雷的邏輯代碼抽離form類獨(dú)立出來等,這些都靠讀者自行去優(yōu)化了。

附上博主源碼下載的百度云鏈接,需要代碼學(xué)習(xí)的可自行下載研究:本地下載

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問大家可以留言交流,謝謝大家對(duì)服務(wù)器之家的支持。

原文鏈接:https://www.cnblogs.com/xu-yi/p/10047375.html

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 欧美一区二区在线观看 | 欧美在线a | 天天综合久久 | 亚洲成人第一网站 | 操久久| 亚洲毛片 | 国产一级高清视频 | 久久精品美女 | 国产色 | 国产91精品一区二区绿帽 | 综合视频一区 | 久久免费99精品久久久久久 | 伊人伊人| 精品视频一区二区 | 久久9999 | 亚洲三区视频 | 久久亚洲综合 | 国产成人精品一区二区三区视频 | 久久中文字幕一区 | 搞黄在线观看 | 亚洲综合欧美日韩 | 亚洲视频一区二区 | 久久极品 | 欧美精品一区二区在线观看 | 卡通动漫第一页 | 欧美视频第一页 | 国产美女久久 | 久久高清片 | 美女国产精品 | 久久久精品国产 | 久久久久国产精品 | 国产亚洲精品久久19p | 日韩精品一区二区三区在线观看 | 中文字幕久热 | 国产成人综合一区二区三区 | 亚洲 中文 欧美 日韩 在线观看 | 国产精品久久久久久久久久免费 | 久久久美女 | 亚洲天堂中文 | 99精品欧美一区二区三区综合在线 | 久久成人免费视频 |