如何開發一個掃雷小遊戲?
如何用C#開發一個掃雷小遊戲?
十分自豪的說,計算機程式設計就是變魔術,每一個coder都是一個魔術師。
初學C#的時候,我相信很多人都和我一樣,學會了基本語法,掌握了基本的資料結構,也見過了不少微軟提供的各種功能的官方函式。所有用來變魔術的道具、材料都有了,可為什麼還是覺得少了點什麼?
當你已經掌握了大多數程式設計知識,卻還是覺得無法獨立開發出一個實用程式的時候,你僅僅缺少一次試煉!你需要的只是扔掉書本,尋找一個能夠激起你濃厚興趣的切入點,然後排除萬難的實現一個相關的程式,並且儘量少的藉助“外力”。如果你喜歡玩遊戲,那麼自己動手寫一個小遊戲吧,想想都酷炫!
今天整理硬碟檔案的時候,不經意的發現了一個不起眼的資料夾:
上面這段話寫給初入團隊學習程式設計的學弟,也寫給急於在找工作前提升實力的自己。其實是想說,在面對一個還沒有掌握的新技能時,要利用興趣尋找突破口進行實戰,總是想著它有多難永遠沒有和它較量一下來的有效。
再次看到這個程式,確實有點小激動,於是花了些時間整理了下當初的程式碼和思路。下面回到正題,本文介紹如何用C#開發一個掃雷小遊戲。如果你需要程式碼,可以到我的Github賬戶上下載:https://github.com/monkeyDemon/MineSweeping
需求分析
在寫一個程式前,首先要對你要實現的需求有著清晰的認識,理清各個需求間的邏輯。
對於一個已經存在的掃雷遊戲,我們不妨觀察一下一個真實的掃雷遊戲是怎樣玩的。觀察下面的兩個遊戲截圖。
由上面兩幅截圖可以分析出:
我們需要定義兩個最核心的模組:小方格Pane和放置所有小方格的整個雷區MineField。小方格要整齊的排列在雷區中,一部分小方格中被隨機的放置了地雷。
小方格的實現需求:
首先,小方格有三種狀態:
關閉狀態(初始狀態)
標記狀態(使用者右鍵標識有雷)
開啟狀態(使用者左鍵點選後的方格,無雷的情況下需要顯示周圍雷的個數)
於是定義列舉型別PaneState對應標識小方格狀態。
小方格Pane,主要需要以下三個屬性:
周圍雷的個數
本方格是否有雷
本方格的狀態PaneState
對於我們的簡單程式,小方格可以通過繼承Button來實現。
小方格主要需要以下三個方法:
標記有雷
開啟此方格
還原標記(已經被標記有雷的方格被再次右鍵點選)
按此框架可以實現小方格Pane類:
雷區的實現需求:
小方格全部部署於雷區,是雷區的子元件,所有需要多個方格聯動的方法都要在這裡實現。
首先是初始化方法Init:
通過整齊排列方格LayoutPane和隨機佈雷LayMines來實現。
然後是獲取周圍雷數的方法GetAroundMineCount:
玩家點選了沒有雷的小方格後需要顯示該方格周圍的雷數。
再然後是開啟周圍區域方法DisplayAround:
當玩家點選的小方格周圍一大片區域都沒有雷時,應當幫他全部展開。這個方法的實現算是唯一有點難點的地方了,需要用到遞迴。
最後要實現一個展示整個雷區的方法DisplayALL:
當玩家失敗時,向其展示整個雷區分佈。
主要方法已經描述,按此框架可以實現雷區MineField類:
程式展示
過多的細節就不做介紹了,一起來看下完成後的效果吧!