如何开发一个扫雷小游戏?
如何用C#開發(fā)一個掃雷小游戲?
十分自豪的說,計算機(jī)編程就是變魔術(shù),每一個coder都是一個魔術(shù)師。
初學(xué)C#的時候,我相信很多人都和我一樣,學(xué)會了基本語法,掌握了基本的數(shù)據(jù)結(jié)構(gòu),也見過了不少微軟提供的各種功能的官方函數(shù)。所有用來變魔術(shù)的道具、材料都有了,可為什么還是覺得少了點(diǎn)什么?
當(dāng)你已經(jīng)掌握了大多數(shù)編程知識,卻還是覺得無法獨(dú)立開發(fā)出一個實(shí)用程序的時候,你僅僅缺少一次試煉!你需要的只是扔掉書本,尋找一個能夠激起你濃厚興趣的切入點(diǎn),然后排除萬難的實(shí)現(xiàn)一個相關(guān)的程序,并且盡量少的借助“外力”。如果你喜歡玩游戲,那么自己動手寫一個小游戲吧,想想都酷炫!
今天整理硬盤文件的時候,不經(jīng)意的發(fā)現(xiàn)了一個不起眼的文件夾:“掃雷1.0”。這是個元老級的程序,在大二前的那個假期,游戲和學(xué)習(xí)一直是我難以平衡的兩件事,慶幸的是我找到了突破口。借著我對于游戲的酷愛和執(zhí)著,用了整整一個假期的時間寫下了這個如今看來幾天就能搞定的小程序“掃雷1.0”。這個程序?qū)ξ业囊饬x便是從學(xué)過編程到能夠編程的變化。
上面這段話寫給初入團(tuán)隊學(xué)習(xí)編程的學(xué)弟,也寫給急于在找工作前提升實(shí)力的自己。其實(shí)是想說,在面對一個還沒有掌握的新技能時,要利用興趣尋找突破口進(jìn)行實(shí)戰(zhàn),總是想著它有多難永遠(yuǎn)沒有和它較量一下來的有效。
再次看到這個程序,確實(shí)有點(diǎn)小激動,于是花了些時間整理了下當(dāng)初的代碼和思路。下面回到正題,本文介紹如何用C#開發(fā)一個掃雷小游戲。如果你需要代碼,可以到我的Github賬戶上下載:https://github.com/monkeyDemon/MineSweeping
需求分析
在寫一個程序前,首先要對你要實(shí)現(xiàn)的需求有著清晰的認(rèn)識,理清各個需求間的邏輯。
對于一個已經(jīng)存在的掃雷游戲,我們不妨觀察一下一個真實(shí)的掃雷游戲是怎樣玩的。觀察下面的兩個游戲截圖。
由上面兩幅截圖可以分析出:
我們需要定義兩個最核心的模塊:小方格Pane和放置所有小方格的整個雷區(qū)MineField。小方格要整齊的排列在雷區(qū)中,一部分小方格中被隨機(jī)的放置了地雷。
小方格的實(shí)現(xiàn)需求:
首先,小方格有三種狀態(tài):
關(guān)閉狀態(tài)(初始狀態(tài))
標(biāo)記狀態(tài)(用戶右鍵標(biāo)識有雷)
打開狀態(tài)(用戶左鍵點(diǎn)擊后的方格,無雷的情況下需要顯示周圍雷的個數(shù))
于是定義枚舉類型PaneState對應(yīng)標(biāo)識小方格狀態(tài)。
小方格Pane,主要需要以下三個屬性:
周圍雷的個數(shù)
本方格是否有雷
本方格的狀態(tài)PaneState
對于我們的簡單程序,小方格可以通過繼承Button來實(shí)現(xiàn)。
小方格主要需要以下三個方法:
標(biāo)記有雷
打開此方格
還原標(biāo)記(已經(jīng)被標(biāo)記有雷的方格被再次右鍵點(diǎn)擊)
按此框架可以實(shí)現(xiàn)小方格Pane類:
雷區(qū)的實(shí)現(xiàn)需求:
小方格全部部署于雷區(qū),是雷區(qū)的子組件,所有需要多個方格聯(lián)動的方法都要在這里實(shí)現(xiàn)。
首先是初始化方法Init:
通過整齊排列方格LayoutPane和隨機(jī)布雷LayMines來實(shí)現(xiàn)。
然后是獲取周圍雷數(shù)的方法GetAroundMineCount:
玩家點(diǎn)擊了沒有雷的小方格后需要顯示該方格周圍的雷數(shù)。
再然后是打開周圍區(qū)域方法DisplayAround:
當(dāng)玩家點(diǎn)擊的小方格周圍一大片區(qū)域都沒有雷時,應(yīng)當(dāng)幫他全部展開。這個方法的實(shí)現(xiàn)算是唯一有點(diǎn)難點(diǎn)的地方了,需要用到遞歸。
最后要實(shí)現(xiàn)一個展示整個雷區(qū)的方法DisplayALL:
當(dāng)玩家失敗時,向其展示整個雷區(qū)分布。
主要方法已經(jīng)描述,按此框架可以實(shí)現(xiàn)雷區(qū)MineField類:
程序展示
過多的細(xì)節(jié)就不做介紹了,一起來看下完成后的效果吧!
?? ?? ??
總結(jié)
以上是生活随笔為你收集整理的如何开发一个扫雷小游戏?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SHA256 的C语言实现
- 下一篇: CentOS 7 防火墙命令