5780-Qt C++開發的植物大戰僵尸工程源碼 可借鑒的開發思路
Qt/C++開發的植物大戰僵尸工程源碼 可借鑒的開發思路
附:完整設計文檔、UML圖、不定時提供源碼分析講解,協助了解功能運作原理。
1 系統需求分析
當可怕的僵尸入侵的時候,誰能想到,弱小的植物能承擔起保衛家園的責任?也許你早聽 說過那些沒有腦子的僵尸席卷整個街區、吃掉一戶一戶屋主人的腦子的故事。但這次,你終于 要真正面對入侵自己家園的僵尸了。有僵尸在你的草坪上!
草坪是植物們的領地。面對瘋狂踐踏的入侵者,植物們不惜以自己的身軀阻擋僵尸前進 的道路。可是僵尸的利齒不僅可以用來吃掉腦子,還可以用來吃掉植物。面對擋路的一切東西, 僵尸們選擇:吃掉它們!
用什么來保衛你自己的家園和腦子呢?我們只有勇氣,和自己手中的那把小鏟子。
試設計游戲,并實現以下功能:
擁有圖形界面,如游戲主界面和準備界面
能完成游戲操作,如放置植物,刪除植物,生成僵尸,攻擊等操作
正確且合理的勝負判斷
實現卡牌冷卻效果
兩個場景的選擇,晴天和黑夜
背景音效的實現,如碰撞,放置植物以及收集陽光等
正確顯示陽光槽,植物卡牌槽等部件
實現九種植物和七種僵尸
實現調試功能,按下一些按鍵可以執行一些特殊操作,比如快速產生僵尸和增加陽光
實現代碼層級的一些基本要求,如面向對象的繼承派生多態等機制,文件操作(讀取 媒體資源文件,讀取記錄用戶名和游戲最長時間的文本文件),一些基本數據結構的使用 (如 list,map,set)等
2 總體設計
植物大戰僵尸是一款游戲非常經典的益智類游戲,畫風友好,玩法多樣,整體邏輯比較 清晰。本次我選擇使用 c++的 GUI 庫 Qt 來寫復現游戲。總體上來說完成了游戲加載界面,菜單選擇界面,主游戲邏輯和交互界面和游戲的基本功能。由于手頭的資源有限(比如植物 和僵尸的貼圖)以及時間等方面的限制,本游戲實現了了七種僵尸和九種植物,以及白天和 黑夜兩個場景模式,具有了一定的可玩性。
首先談一下我在初期設計的主要想法。我認為,同為程序,不同種類的程序的開發思路 是截然不同的。比如設計一個數據管理系統和游戲的思路是截然不同的。我認為游戲的最 大特點在于它是一種交互性極強的產品形式,而且一般工程量較大,需要兼顧內在邏輯和 外在用戶交互界面,并且由于和用戶的交互性極強,操作多樣化,非常適合面向對象的開發 思想。因此本次自選題我選擇了實現植物大戰僵尸這一經典的游戲。
基于自己的水平考慮,我選擇了非常常規的經典面向對象的思路,定義良好的復用性強 的基類,如果想要添加新的對象和功能,只需要從基類派生并將新類加入生成器。在邏輯和 UI 界面的關系選擇上,讓每個游戲對象負責處理自己的邏輯和動畫,而不是將邏輯和畫面 完全分開,每回合邏輯執行完成后渲染畫面。因為前者雖然效率低了一些,但是總體上說更 符合人的思路,對前期的架構設計要求也沒有那么高,可以后期逐步完善,拓展性更強一 些。
而在要求上,我完成了必須要求
函數重載
類的繼承和抽象基類
動態分配 內存和文件操作
使用了 list 和 set 等數據結構
總體上來說,需要實現的模塊和功能有:
渲染場景:包括加載歡迎界面和游戲主界面
多種植物:游戲的主要實體對象之一
多種僵尸:游戲的主要實體對象之一
多種飛行物:如豌豆、孢子等,也是游戲的重要對象
多種動畫:在游戲中需要根據實物的狀態來更新各種動畫
獎勵物:陽光等
多種卡片:主要指的是種植植物是選擇的卡片,需要完成冷卻功能




本源碼地址:http://m.bmm520.net/vip/vc/2023/1105/24099.html