坦克大戰項目總結

坦克大戰是一款經典的小遊戲,也是我們這次的開發項目。

關於線程的項目開發,本來是有很多選擇的,比如彈球,打磚塊,雷電等等。由於這類項目我們個人來做可能存在很多問題,所以是以小組的形式做項目。至於爲什麼選擇坦克大戰,應該說是我們選擇的時候欠考慮了。本來是想選個簡單點的,而坦克大戰不少人都做過,當時也沒想太多,覺得不會太難,就選擇了這個。後來在製作過程中發現了不少問題,細想以後發現這個其實比另外幾個都還難,下面簡單闡述一下坦克大戰的開發思路,及和其他項目的區別比較。

我們小組四個人來完成這個項目,由於初次以小組合作的形式來做項目,存在着許多不足之處,導致在製作過程中的很多麻煩。當然,初次合作,我們也有不少做的好的地方。

首先,我們是分工完成。各自挑一部分寫。一開始我們想到的類有主界面類,我方坦克類,敵方坦克類,子彈類,各種數據類(包括地圖)。我當時負責的是敵方坦克,這個類算是比較好寫的一個類,我自己寫好的程序是有敵方坦克和己方坦克,能用鍵盤控制己方坦克自由移動的程度。後來是要把我那個敵方坦克的類整合到主類裏去。整合的過程中出現了很多麻煩。比如我們的包名不一樣,很多變量名和方法名不一樣,都導致了整合時出現問題。之後的總結中我們也提到了這個問題,這是因爲我們一開始就沒有統一這些東西,只統一了顯示界面的大小之類的,沒有想到這些。

前期的開發是比較順利的,地圖很快就弄好了,我方坦克和敵方坦克也都弄好了,接下來的首要任務就是加子彈了。子彈是另外一個線程。同時我們也要爲坦克都附加一個子彈的屬性。後來我們採用了再創建一個坦克類,這個類是我方坦克和敵方坦克的基類,坦克該有的屬性都在這個類裏,這樣就省去了很多麻煩。

剩下的東西就是比較麻煩的。比如解決坦克碰牆問題,子彈發射後打到東西沒有停下來,而是直接覆蓋了,打到敵方坦克後敵方坦克沒有消失等等。這些問題差不多就是我們完成項目的主要障礙了,沒有如期完成除了學校功課緊張,時間較少外,就是這些問題比較麻煩了。不過最後還是得到解決。總結的前一天晚上我們四個人還跑去網吧通宵做項目。不過在網吧的話,還是玩的比較多一點。但起碼精神是可貴的。

至於問題的解決方案,在這裏也就不細說了。也有很多問題不是我解決的,其實我也還沒弄得很明白是怎麼解決的。這點還是比較慚愧的。

下面是我們的坦克大戰的兩幅效果圖,不同的地圖。



 



 

接下來說一下坦克大戰和其他項目的比較。由於沒有做過其他幾個,所以這些只能是我想到的。先說雷電,個人覺得雷電其實和坦克大戰差不多。製作上應該比坦克大戰容易,因爲不需要判斷飛機與地圖接觸,地圖只是一個背景而已,而不像坦克大戰那樣有草地,磚塊,河流等等。其他的地方和坦克大戰很類似,不過在敵機出現方式上可能會有改變。另外就是可以移動下面的背景來使達到飛機前進的效果,這點不太一樣。彈球主要是解決碰撞問題。打磚塊的難點應該在球與磚塊接觸後球的運動方向及磚塊的消失。改變運動方向的我只做過單一的座標反方向,就是碰撞時單一的改變座標增量xy的正負,以達到反彈的效果。另一個是磚塊消失,這個和坦克消失也可以用類似的方法做到。把磚塊或坦克放到一個容器裏,然後再移除。其他的就是美觀和優化問題了,技術要點應該是差不多的。

這是一個合作項目,做起來和個人開發不太一樣。在這次合作中,我們也學到了很多合作方法,有了一定的合作經驗,相信下一次的合作肯定能有更多的進步。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章