創建項目
在Visual Studio 2022中創建一個空白的項目,起名為:NumberMemoryGame。
創建遊戲項目
命名規範
常規的變量、函數以及文件名等命名規範不再贅述,這裡主要說一下項目中變量和函數的命名規範。
由于C語言沒有命名空間的概念,所以在定義變量、函數的時候要避免與系統、第三方類庫以及自身項目裡的變量、函數重名,否則會出現難以預料的bug,本項目采取了增加前綴的措施來确保不會重名。
前綴構成:項目名首字母 文件名 表意函數名,中間用下劃線連接,比如:NMG_view_init()。
目錄結構
根據上一篇文章中提到的模塊拆分,我們建立具體的源文件、頭文件與之對應。
項目目錄結構
下面簡單介紹一下每個文件的作用:
MVC
以上文件目錄結構創建好後,我們就往面向對象的編程思路上去靠攏,首選是常用的MVC模式:
筆者GUI開發經驗不多,再加上C語言自身的一些問題,很難去按照嚴格意義上的MVC模式去開發,但是我們的編程思想要向MVC看齊。
如果不理清關系、把邏輯分層、模塊拆分開來,直接上手開發的話肯定會無從下手,而且過程會出現難以控制的bug,日後維護也很困難。
實例
下面來簡單看一個實例,我們來實現排行榜這個模塊的功能。
首先定義好數據模型,前期先加兩個字段,後期實際開發中再去擴展。
定義排行榜數據模型
然後,在控制器中實現業務邏輯——做底層數據和外層視圖的橋梁。排行榜模塊功能很簡單,前期就做兩個功能:展示和更新。
排行榜模塊的控制器
不過,在控制器中,并沒有直接去數據庫(當前項目的文件系統)去直接讀寫數據,而是又加了一個文件data.cpp專門去讀寫數據庫,這樣做能讓底層的數據分離更加徹底,使得程序邏輯更加清晰。
文件讀寫模塊
注意到,這裡有些函數隻是做了定義(輸入和輸出),這點上一篇文章提到過:先把邏輯走通,回頭再完善具體的功能性的函數。
初步的窗口布局效果
由于要整理開發教程的步驟,所以整體進度上受點影響,今天先把初步的窗口布局實現以下,效果如下。
初步窗口布局
左側就是遊戲區了,目前已經劃分好了棋盤,接下來就是把數字随機到棋盤格子裡去,然後再接收玩家的鼠标點擊事件,挑戰成功則開啟下一關,直至全部通關,基本上遊戲的閉環就完成了。
右側是功能區,主要是計時、排行榜、功能設置三塊。
EasyX的使用
咱們項目的重點是通過EasyX來完成GUI開發,下面就來簡單看一下EasyX的使用方法。
主函數
在主函數裡調用,NMG_game_init()遊戲初始化函數,然後在NMG_game_init()裡調用NMG_view_init()視圖初始化函數。
遊戲初始化函數
至于為何要嵌套一層調用,這個就是我們上面提到的要使用MVC模式編程。這裡的函數還有要完善的地方,到時候代碼會變多,就能顯現出MVC的優點了。
視圖模塊
在視圖裡簡單實現一下窗口布局,EasyX主要就是在這裡發揮它的作用的。
總結OK,到這一步我們遊戲開發的基本框架算是搭建好了,接下來需要開發遊戲的核心玩法了。
如果你對C語言的GUI編程感興趣的話,請持續關注本系列文章,有建議意見歡迎留言或私信。
PS:需要源碼的話請留言,人數多的話我就把項目推到GitHub上去供大家參考。
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!