學C#的原因其實挺簡單的,因為一直對游戲挺感興趣,查了下比較流行的游戲引擎Unity的主要開發(fā)語言是C#,所以就決定從C#入手,學學面向對象的編程方法。
成都創(chuàng)新互聯(lián)服務緊隨時代發(fā)展步伐,進行技術革新和技術進步,經(jīng)過十余年的發(fā)展和積累,已經(jīng)匯集了一批資深網(wǎng)站策劃師、設計師、專業(yè)的網(wǎng)站實施團隊以及高素質售后服務人員,并且完全形成了一套成熟的業(yè)務流程,能夠完全依照客戶要求對網(wǎng)站進行成都網(wǎng)站制作、成都網(wǎng)站建設、建設、維護、更新和改版,實現(xiàn)客戶網(wǎng)站對外宣傳展示的首要目的,并為客戶企業(yè)品牌互聯(lián)網(wǎng)化提供全面的解決方案。以前基本都做的是嵌入式開發(fā),做嵌入式久了,基本上只用C語言,C語言面向過程的特性在嵌入式編程這種資源極度受限的情況確實十分有利,但這種方式在面對大型軟件的開發(fā)的時候就很難勝任了。編程的模式其實是一種思維習慣,習慣久了以后,想改變確實是一個艱難的過程···
說起C#,其實在大學的時候學過一個學期,說來慚愧那時候倒也沒把它當一門面向對象的語言(其實是當時根本不知道面向對象是啥),感覺跟C語言也就一點語法差異,把所有的用法全部歸為語法不同,說來也神奇,這種方法倒也能編程。最終學期結束的時候交上去一份用Winform開發(fā)的掃雷游戲結束了我的C#學習,在那之后就再也沒碰過C#。
現(xiàn)在重拾C#,為了免除掉不必要的干擾,并沒有直接在Unity上學習,而是仍然在VS中學習,但這次選擇了比較新的WPF,而不是WInform,作為學習,第一個任務還是跟以前一樣做一個掃雷游戲。
寫在不怎么前面的前面:本文主要分享下程序分析過程,具體的實現(xiàn)方法不是本文重點,對實現(xiàn)有問題的朋友可以自行評論區(qū)留言索要源碼或者提問^_^。
一、分析
1.游戲分析
那進入正題,應該如何完成這個游戲。忽略細枝末節(jié)的部分(如計時,顯示剩余雷數(shù),菜單欄等)不說,就單說這個游戲的主體:掃雷區(qū)。
在游戲沒開始的時候,掃雷區(qū)放眼望去其實只有一個東西,那就是方塊...
忽略光影效果不談(是的,我又忽略了···),所有方塊的顏色都一樣,都響應相同的事件,那就是左鍵和右鍵。左鍵點開方塊,右鍵給方塊做個標記,認定為地雷。再繼續(xù)分析,方塊具有不同的種類。有的方塊點開之后周圍會有一大片方塊一起打開。有的方塊下面是地雷,點開就GameOver。還有方塊下面是數(shù)字,代表著周圍有多少個地雷。(果然,我又忽略了鼠標兩個鍵同時按自動打開周圍格子和第二次右鍵可以顯示問號的功能···但其實之后會發(fā)現(xiàn)這個功能其實要增加也會很簡單)。
所以,先來總結下掃雷游戲實現(xiàn)的核心:
2.實現(xiàn)技術分析
經(jīng)過分析,是不是發(fā)現(xiàn)掃雷的的玩法其實很簡單,實現(xiàn)的技術也不難,全是靜態(tài)的沒有動畫的存在。
方塊的表現(xiàn)很像一個只能按一次的按鈕(事實上,在大學的時候我就是直接繼承的按鈕控件)。
但這一次為了能使用到更多C#相關的東西我使用了更加麻煩的自定義控件的方式。
方塊有三種表現(xiàn)形式,為特殊性,但很顯然也具有共性,所以在設計的時候,我把按鈕共性抽離出來,設計成了一個抽象的基類Cube。方塊有三種類型,但因為我懶,所以把其中的兩種(空白和數(shù)字)合并為了NumCube類,包含地雷的為BombCube類,這兩個類分別繼承了Cube。
Cube的實現(xiàn):
Cube類中擁有以下字段:
ImageSource cubeNormalPic ImageSource cubeOnPic ImageSource cubeDownPic ImageSource cubeDisablePic ImageSource cubeFlagPic
另外有需要云服務器可以了解下創(chuàng)新互聯(lián)建站www.cdcxhl.com,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。