cocos2d-x遊戲《StopGMO》現階段成品及代碼發佈

《StopGMO》,就是我第一篇博文中提到的《兔子大戰轉基因(蔬菜)》。它本來是個flash遊戲(http://wanga.me/25523)。我克隆(山寨)它是由於我在學cocos2d-x的時候恰好玩了這個遊戲,而且以爲比較簡單,而且我沒有美工,因此就決定克隆一下它。個人程序裏面用到的圖片資源基原本源於原來falsh版本的StopGMO,這些資源僅供學習和娛樂,但願沒有侵犯原來遊戲的版權。 android

如下連接是代碼及資源的連接(其中包含一個編譯爲android可運行程序的apk安裝包(應用android2.2的api編譯)): 編程

http://www.oschina.net/code/snippet_115087_17123 api


暫時只添加了一種怪物--胡蘿蔔。若是要添加新的怪物,能夠繼承代碼中的Enemy類來添加新的怪物類。 學習

目前的主角也只能使用一種武器--鋤頭。若是要添加新的武器,能夠繼承代碼中的Weapon類來添加新的武器類。 動畫

如今的主角是處於無敵狀態的,由於我在代碼中進行了攻擊的檢測,可是並無調用玩家的hurt()方法。 spa

///////////////////////////////////////////////////////////////////// .net

關於程序的結構: 設計

GameRoot做爲一個靜態的類,負責圖片資源的初始化、場景的替換等。 code

SceneGame做爲一個遊戲的場景類。它包含了HudLayer跟GameLayer。其中HudLayer是負責接受並解析用戶輸入的,而GameLayer是負責遊戲主要事件邏輯控制的。而SceneGame的做用就是將HudLayer解析的控制輸入傳輸到GameLayer裏。 繼承

HudLayer負責接受和解析用戶輸入。包括虛擬手柄和按鍵以及菜單按鈕等。(虛擬手柄我用了一個現有的庫:Sneaky library)。

GameLayer負責遊戲事件的邏輯控制。它每一幀都調用gameLogic方法。該方法中處理包括inputUpdate();spawnUpdate();bulletUpdate();enemyUpdate();viewpointUpdate();等。


最後得說一下,我用的cocos2d-x的版本是cocos2d-2.1beta3-x-2.1.0。其餘版本的庫在編譯時,源文件可能須要有稍許修改。


/////////////////////////////////////////////////////////////////////

未來的改進:

1.最近我在看一本書:《遊戲編程精粹1》。裏面提到了一個思想:數據驅動。我感受個人程序是能夠應用這個思想的。Enemy再也不派生出Carrot,Corn等怪物類。由於Carrot,Corn等怪物的行爲實際上是徹底同樣的,只是移動速度、攻擊力、貼圖等不一樣。因此其實能夠編寫一個XML文件來保存速度、攻擊力、貼圖名稱等數據。在Enemy實例化的時候提取XML文件的數據便可生成相似Carrot,Corn等不一樣種的怪物了。Weapon也是能夠應用這種思想的。

2.儘可能少用new跟delete。Enemy或者Bullet等在設置爲die之後都不是直接delete,而是爲其添加一個布爾量IsUsed,在die後設置爲false。表示這個實例已經死亡了。在下一次須要new的時候,咱們不用new,而是修改那些IsUsed == false的實例的速度、攻擊力等參數,模擬一次new。

3.將子彈變成一個CCSprite。子彈再也不是隱形的子彈,而是具備動畫的,而且能夠設置特定軌跡的。就像合金彈頭裏面的同樣。

4.還在想。。。


/////////////////////////////////////////////////////////////////////

工做進度:

進度可能會很慢,由於我如今正在搞畢業設計。而且我也不怎麼想搞這個遊戲了,我想搞另一個相似塗鴉跳躍的刷分遊戲。

相關文章
相關標籤/搜索