Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android游戲 >> Android游戲開發 >> Android小兔子跳鈴铛游戲開發過程和心得

Android小兔子跳鈴铛游戲開發過程和心得

編輯:Android游戲開發

       本文中的Android游戲開發實例是一位比較有上進心的學生分享的,實現的是小兔子跳鈴铛的游戲。作者在開發過程中有經驗也有疑惑,大家可以據此發表自己的評論。

       一、游戲運行效果

Android小兔子跳鈴铛游戲開發過程和心得 

Android小兔子跳鈴铛游戲開發過程和心得

Android小兔子跳鈴铛游戲開發過程和心得

Android小兔子跳鈴铛游戲開發過程和心得

Android小兔子跳鈴铛游戲開發過程和心得

Android小兔子跳鈴铛游戲開發過程和心得

       二、運行環境說明

       我是用Eclipse開發的,在模擬器上運行。模擬器的配置如下。大家注意下Skin選項中Built-in 必須是“WQVGA400”(這是我游戲的一個缺陷)。

Android小兔子跳鈴铛游戲開發過程和心得

       三、體系結構說明

       在看這部分之前,我建議大家先到網上玩玩那個小游戲(http://www.vifo.com.cn/games/no2/tiaolindang/tiaolindang.swf),相信會對你對我下面類容的理解有所幫助。

  下面是Eclipse截圖,我簡要說明下各個類的作用:

       1、RabitActivity:游戲就從這個Activity啟動,它的主要作用就是負責展示游戲簡介(IntroduceView),如何游戲(HelpView),是否開啟音效AudioView)的這三個不同的屏幕。

       2、GameActivity:當用戶選擇完是否開啟音效後,就切換到一個新的activity,即GameActivity。

       3、Rabit,Bell, Bird,對游戲中兔子,鈴铛,鳥的定義。包括狀態(state),圖片(bitmaps), 速度(speed)都在裡面定義。我感覺,state是個很重要的屬性,他決定著這個對象到底處於何種狀態,從而根據這些狀態繪制不同的圖片。

       4、GameSurfaceView:游戲的顯示類,同時是個大容器,將所有的游戲中出現的對象都包含進來,裡面的update_all_components()是游戲的核心。

       5、BellCreator:負責鈴铛的對象的創建。當一個鈴铛從屏幕中消失是,該對象並沒有被銷毀,而是被BellCreator回收,當下次有新的鈴铛在屏幕上出現時,BellCreator就把回收過來的Bell對象重新初始化後交給GameSurfaceView。目的是節約資源,提高系統的系能。

       6、Background:負責動態背景的生成。

       7、AudioProvider:音頻的封裝,負責音效。

Android小兔子跳鈴铛游戲開發過程和心得

       那麼整個游戲是如何跑起來,所有的對象(圖片)如何動起來的呢?

  相信有過一些有小游戲開發經驗的人知道,在整個系統中,除了主線程外,會啟動另外一個線程,這個線程負責不斷刷新所有對象的狀態,更新圖片,從而達到動畫的效果。

  我也是這樣做的。在GameSurfaceView中我有個內部類,RefurbishThread,它負責每100毫秒調用GameSurfaceView.update_all_components()方法更新所有rabit,bell,bird,background狀態,然後重繪屏幕。

       整個程序的源碼可以在http://www.rayfile.com/files/f8b99ad1-c4e8-11e0-bb73-0015c55db73d/下載。

  個人覺得Rabit,Bell等對象狀態的定義是個需要花腦筋的地方,我做得還不夠好,下面是定義Rabit的一些狀態:

Java代碼
  1. private int face_state;   
  2.     private int ground_state;   
  3.     private int air_state;   
  4.     //rabit面左面右狀態   
  5.     public static final int RABIT_FACE_LEFT = 1;   
  6.     public static final int RABIT_FACE_RIGHT = 2;   
  7.     //rabit在地面狀態   
  8.     public static final int RABIT_NOT_ON_GROUND = 0;   
  9.     public static final int RABIT_LEFT_STOP = 1;   
  10.     public static final int RABIT_RIGHT_STOP = 2;   
  11.     public static final int RABIT_LEFT_MOVE1_ON_GROUND = 3;   
  12.     public static final int RABIT_LEFT_MOVE2_ON_GROUND = 4;   
  13.     public static final int RABIT_RIGHT_MOVE1_ON_GROUND = 5;   
  14.     public static final int RABIT_RIGHT_MOVE2_ON_GROUND = 6;   
  15.     //rabit 在空中的狀態    
  16.     public static final int RABIT_ON_AIR_UP0 = 0;   
  17.     public static final int RABIT_ON_AIR_UP1 = 1;   
  18.     public static final int RABIT_ON_AIR_UP2 = 2;   
  19.     public static final int RABIT_ON_AIR_UP3 = 3;   
  20.     public static final int RABIT_ON_AIR_UP4 = 4;   
  21.     public static final int RABIT_ON_AIR_UP5 = 5;   
  22.     public static final int RABIT_ON_AIR_STOP = 6;   
  23.     public static final int RABIT_ON_AIR_DOWN = 7;  

       四、技術小經驗

  下面是一些開發中遇到技術層面小知識,希望對大家有幫助:

  1、如何將游戲畫面保持橫向顯示,不會因為手機橫豎而自動切換顯示方式:在activity標簽裡面加上這兩個屬性的配置就可android:screenOrientation="landscape" android:configChanges="orientation|keyboardHidden|navigation"

XML/HTML代碼
  1. <activity androidandroid:name=".GameActivity"android:screenOrientation="landscape"  android:configChanges="orientation|keyboardHidden|navigation"></activity>  

       2、android開發 drawable(hdpi,mdpi,ldpi)的區別:

  http://hi.baidu.com/lujie_dream/blog/item/4ed68b77b28a84210cd7da97.html

  3、java 線程的基礎知識

  http://java.chinaitlab.com/line/373702.html

  4、Handler的使用

  http://www.pin5i.com/showtopic-android-handler.html

       五、我的困惑

       1、不知正規的Android游戲開發是如何進行的,應該不是像我這樣貼圖這樣簡單吧,用游戲引擎嗎?什麼引擎?網上的資料感覺太少了,希望google能夠多提供這方面的幫助。不知列位看官是否知道真正手機游戲如何開發的,指點一二,不勝感激。

  2、體系結構做的不好,類與類之間的耦合度高的嚇人。上學期雖然上了設計模式這門課,可能是學藝不精吧,這個小游戲沒用什麼模式。竊以為,是不是對於小的項目,設計模式用場不是很大?或許小的項目有很大的耦合是正常的,它沒有必要分很多模塊然後分別進行設計?設計模式可能對大的項目很有用吧,大的項目也需要設計模式。不知我的想法對不對,希望有牛人指點。

       六、總的感悟

  關於Android開發平台的體會:

  我有種粗淺的感覺,在Android平台上開發與平常Java開發差別不是很大。處理配置文件外,程序的大部分代碼都是用Java寫的。如果你學過Java,有一點Java開發的經驗,Android入門還是挺快的。看看書,到網上查查資料,熟悉一些基本機制,如Activity,了解一些API,再動手試試,上手挺容易。當然,無知者無畏,想必Android一些深層的機制不是那麼簡單,還有許多Android上的概念定義我沒掌握,須認真學習體會。我想說的是做個Android菜鳥不那麼困難,所以若對Android開發有興趣,那就行動吧~

       所謂堅持:

  堅持不是件容易的事。

  暑假留校學習Android,開始時熱情很高,看書看視頻感覺挺好,自己每天都有收獲,很幸福。

  真正做其開發時,遇到了不少困難。主要是游戲整體和細節設計,類似游戲的參考很少,有很多Class定義需要左思右想抓耳撓腮,沒有同學可以共同探討,自己感覺又解決不了,很痛苦!很茫然!很失落!於是想要放棄,反正自己做的這件事又沒有什麼硬性要求,何必自己難為自己呢?

  平時我總是輕視書上鼓吹堅忍不拔之人,覺得他們沒什麼了不起,不就是堅持嘛,很有可能是後人杜撰的。可現在,反身看看我自己,如果放棄的話,還有什麼資格瞧不起別人?於是在這種心理下,硬著頭皮繼續學習。呵呵,當然,我也狠狠地放縱自己,努力玩,然後學習開發。

  總之,我可以說雖然做這個小東西對別人來說很容易,你也許會輕視我,但我不管,我挺了下來,現在心情還不錯。

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved