Android_手把手教你寫跳躍類遊戲(3)

這是第三篇博客,在本次教程中,我們將完成Food這個類的設計。這是遊戲相當關鍵的一部分,直接決定瞭遊戲的可擴展性、可玩性。。。

 進入正題:

先給大傢看下Food類的類圖:

 
 

從圖中我們可以看到有多種食物,並且它們具有很多相同的屬性和方法。所以我們很容易想到使用繼承Food類。

新的類圖就變成這個樣子瞭:

 

 

這樣當我們為遊戲添加新的事物類型時隻需要繼承Food類並重寫draw方法就可以瞭。(不同的食物,所表現的外觀不同,所以需要具體的食物類,自己實現這個方法)

但是還有一點值得註意:每一個食物都有多種運動方式。如:水平運動,垂直運動,靜止。。。如果將這些方式寫在具體的事物類裡面,首先這個move方法會變得很復雜,裡面會有各種分支,判斷。。。

那麼如果後期我們對遊戲進行升級,比如增加一種新的運動方式,或者刪除一種新的運動方式將變得非常繁瑣,而且也不利於代碼的復用。

這個時候我們需要采用這樣一種設計模式:策略模式。

我們把move這個方法抽象為一個類MoveBehaviour。

那麼新的類圖就是這個樣子瞭:

 

 

當我們需要添加新的運動方式時,隻需要寫一個類繼承MoveBehavior,並實現具體的move方法就可以瞭。

這樣就完成瞭食物類的設計瞭。我們這樣設計之後,就可以非常靈活的創建新的食物,並為其添加新的運動方式瞭。。。瞭不起!!!

給大傢看下項目的結構圖: www.aiwalls.com

 

 

通過將源碼放在對應的package裡面更利於遊戲的管理。

源碼下載地址請看最終版!

摘自 EaSy的專欄
 

發佈留言