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




本源碼地址:http://www.ggwsfjtv.cn/vip/vc/2023/1105/24099.html