免费观看又色又爽又黄的小说免费_美女福利视频国产片_亚洲欧美精品_美国一级大黄大色毛片

C#編寫掃雷游戲

翻看了下以前大學學習的一些小項目,突然發現有個項目比較有意思,覺得有必要把它分享出來。當然現在看來,里面有很多的不足之處,但因博主現在已經工作,沒有時間再去優化。這個項目就是利用C#編寫一個Windows系統下的掃雷小游戲。

創新互聯建站從2013年創立,公司以網站設計制作、成都網站建設、系統開發、網絡推廣、文化傳媒、企業宣傳、平面廣告設計等為主要業務,適用行業近百種。服務企業客戶數千家,涉及國內多個省份客戶。擁有多年網站建設開發經驗。為企業提供專業的網站建設、創意設計、宣傳推廣等服務。 通過專業的設計、獨特的風格,為不同客戶提供各種風格的特色服務。

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

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

(2)當點開的格子不是地雷區域的時候,該格子會顯示一個數字,該數字表示的含義就是該格子周邊有多少個地雷。

(3)同時點開的如果非地雷的格子,周邊連貫的非地雷區域都會自動被掃描打開,直到遇到旁邊有雷區的時候停止。

(4)當你判斷出格子是地雷的時候,你可以使用鼠標右鍵將該塊方格標記為雷區。當不確定的時候,你可標記個問號以待確定。

下面來說下我大學時候實現這個掃雷小游戲的思路:

(1)因為雷區是一個個格子聯合組成的,那我們可以使用winform程序自帶的系統按鈕控件Button來實現雷區方格。

(2)代表雷區方格的Button按鈕需要實現下面幾個事件:鼠標左鍵點擊掃雷事件,鼠標右鍵點擊標記雷區事件,鼠標右鍵點擊標記問號區域事件。

(3)為了更好的實現游戲的可玩性,增加一個自由設置地雷數量的小功能,可自行設置雷區包含的地雷數量,設置完成后,自動刷新界面,重新部署地雷。

(4)我們將雷區的方格存儲在一個全局的二維數組中,Form窗體在初始化的時候,自動生成面板區域的Button按鈕列表。

(5)為了實現每次玩游戲的時候,地雷分布不一致,我們在Button列表生成后。隨機抽取出某些Button按鈕作為地雷分布點,并記錄該Button的雷區屬性為含有地雷。

(6)算法中的關鍵:遞歸算法計算雷區。當點擊某個方格的時候,如果該方格是雷區,則直接Game Over,如果不是的話,則我們需要一個算法去計算旁邊區域的地雷數量,以及旁邊區域沒有地雷的區域,當沒有地雷的區域連成一片的時候,我們需要使用遞歸算法,去查找二維數組,找到對應的連片非雷區,將之打開。

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

游戲的最終效果圖如下:

C#編寫掃雷游戲

我們下面來剖析下幾個關鍵點,因為代碼量比較多,我就不全部詳細剖析了。

首先我們定義一個LeiButton類,這個類繼承于系統控件Button,增加x,y,youlei三個字段,x表示二維數組的第一個索引,y表示二維數組的第二個索引值,youlei用于標記Button方塊區域按鈕的狀態(0表示無雷,1表示有雷)。同時我們使用Button按鈕類自帶的一個Tag屬性標記該方塊區域是否被翻開。具體定義如下:

C#編寫掃雷游戲

然后我們在窗體對象Form類中定義一些常用的變量之類,如下圖,都有相應注釋
C#編寫掃雷游戲

下面我們來看下生成Button的二維數組,即生成雷區的Button列表。我們需要在Form中添加GroupBox組件,然后將動態生成的Button列表添加到這個groupbox組件中。生成Button的二維數組方法體如下:

C#編寫掃雷游戲

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

C#編寫掃雷游戲

到了這一步,我們就應該將雷區的界面渲染出來了,這時候我們可以將上面兩個方法放入窗體的Form_Load事件中即可渲染出游戲界面。如下所示

C#編寫掃雷游戲

我們繼續,下面寫掃雷的算法,當鼠標左鍵點開某個方格的時候,如果該方格不是雷區,那我們需要計算該方格周邊的地雷數量,計算方法如下:

C#編寫掃雷游戲

下面是個遞歸計算的核心算法,非常關鍵。當我們點開的方格非雷區的時候,周邊連片的非雷區的方格塊會被打開。這一塊的核心算法參考下列代碼,row表示行,col表示列
C#編寫掃雷游戲

下面我們來添加鼠標的點擊事件,我這邊采用的是bt_MouseUp事件來處理。點擊后,我們首先判斷游戲是否結束,如果沒結束,則進行下列操作,獲取到被點擊的按鈕的x,y值以及點擊事件按下的鍵值(判斷按下的是鼠標左鍵還是右鍵)。x,y值獲取到了,我們就可以到Button二維數組中找到對應元素。
C#編寫掃雷游戲

假如點擊的是鼠標左鍵,則我們進行掃雷操作,具體的代碼如下:

C#編寫掃雷游戲

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

C#編寫掃雷游戲

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

C#編寫掃雷游戲

掃雷游戲的設計大概到此結束,中間還有很多可以優化的地方,比如將掃雷的邏輯代碼抽離Form類獨立出來等,這些都靠讀者自行去優化了。

附上博主×××的百度云鏈接,需要代碼學習的可自行下載研究:https://pan.baidu.com/s/1T4zVndyypzY9i9HsLiVtGg 提取碼: b2im

最后,附上博主的IT技術學習群,歡迎各位同行入群指導交流。技術群:872894940

更多文章可以關注博主個人站點:IT技術小屋。

本文名稱:C#編寫掃雷游戲
URL分享:http://m.newbst.com/article10/jecpgo.html

成都網站建設公司_創新互聯,為您提供服務器托管外貿建站用戶體驗手機網站建設商城網站營銷型網站建設

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

成都定制網站建設