自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Android游戲小兔子跳鈴鐺開發(fā)過程和心得

移動開發(fā) Android
本文記錄了一位學生開發(fā)者在開發(fā)一款A(yù)ndroid小兔子跳鈴鐺游戲時的點點滴滴,有疑惑,更有收獲與感悟,在這發(fā)出來與大家分享。

一、 先看看效果圖

Android小兔子跳鈴鐺游戲開發(fā)過程和心得

Android小兔子跳鈴鐺游戲開發(fā)過程和心得

Android小兔子跳鈴鐺游戲開發(fā)過程和心得

Android小兔子跳鈴鐺游戲開發(fā)過程和心得

Android小兔子跳鈴鐺游戲開發(fā)過程和心得

Android小兔子跳鈴鐺游戲開發(fā)過程和心得

二、運行環(huán)境說明

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

Android小兔子跳鈴鐺游戲開發(fā)過程和心得

三、體系結(jié)構(gòu)說明

在看這部分之前,我建議大家先到網(wǎng)上玩玩那個小游戲(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,對游戲中兔子,鈴鐺,鳥的定義。包括狀態(tài)(state),圖片(bitmaps), 速度(speed)都在里面定 義。我感覺,state是個很重要的屬性,他決定著這個對象到底處于何種狀態(tài),從而根據(jù)這些狀態(tài)繪制不同的圖片。

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

5、 BellCreator:負責鈴鐺的對象的創(chuàng)建。當一個鈴鐺從屏幕中消失是,該對象并沒有被銷毀,而是被BellCreator回收,當下次有新的鈴鐺在 屏幕上出現(xiàn)時,BellCreator就把回收過來的Bell對象重新初始化后交給GameSurfaceView。目的是節(jié)約資源,提高系統(tǒng)的系能。

6、Background:負責動態(tài)背景的生成。

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

Android小兔子跳鈴鐺游戲開發(fā)過程和心得

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

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

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

整個程序的源碼可以在http://down.51cto.com/data/804921下載。

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

  1. privateint face_state;     
  2. privateint ground_state;     
  3. privateint air_state;     
  4. //rabit面左面右狀態(tài)   
  5. publicstaticfinalint RABIT_FACE_LEFT = 1;     
  6. publicstaticfinalint RABIT_FACE_RIGHT = 2;     
  7. //rabit在地面狀態(tài)   
  8. publicstaticfinalint RABIT_NOT_ON_GROUND = 0;     
  9. publicstaticfinalint RABIT_LEFT_STOP = 1;     
  10. publicstaticfinalint RABIT_RIGHT_STOP = 2;     
  11. publicstaticfinalint RABIT_LEFT_MOVE1_ON_GROUND = 3;     
  12. publicstaticfinalint RABIT_LEFT_MOVE2_ON_GROUND = 4;     
  13. publicstaticfinalint RABIT_RIGHT_MOVE1_ON_GROUND = 5;     
  14. publicstaticfinalint RABIT_RIGHT_MOVE2_ON_GROUND = 6;     
  15. //rabit 在空中的狀態(tài)    
  16. publicstaticfinalint RABIT_ON_AIR_UP0 = 0;     
  17. publicstaticfinalint RABIT_ON_AIR_UP1 = 1;     
  18. publicstaticfinalint RABIT_ON_AIR_UP2 = 2;     
  19. publicstaticfinalint RABIT_ON_AIR_UP3 = 3;     
  20. publicstaticfinalint RABIT_ON_AIR_UP4 = 4;     
  21. publicstaticfinalint RABIT_ON_AIR_UP5 = 5;     
  22. publicstaticfinalint RABIT_ON_AIR_STOP = 6;     
  23. publicstaticfinalint RABIT_ON_AIR_DOWN = 7;    

四、技術(shù)小經(jīng)驗

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

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

XML/HTML代碼

  1. <activityandroidandroid:nameactivityandroidandroid:name=".GameActivity"android:screenOrientation="landscape"android:configChanges="orientation|keyboardHidden|navigation"></activity> 

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

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

3、java線程的基礎(chǔ)知識

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

4、Handler的使用

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

五、我的困惑

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

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

六、總的感悟

關(guān)于Android開發(fā)平臺的體會:

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

所謂堅持:

堅持不是件容易的事。

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

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

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

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

責任編輯:閆佳明 來源: jizhuomi
相關(guān)推薦

2014-06-10 15:28:04

2010-03-04 09:54:24

Android開發(fā)

2010-02-22 17:20:45

Python開發(fā)

2012-02-28 14:48:41

2011-10-17 09:31:39

maven

2014-04-18 14:26:07

AndroidiOS對比

2010-07-21 14:42:15

Windows Pho

2013-07-18 13:44:13

2017-09-08 17:25:18

Vue探索實踐

2020-10-12 10:41:15

Linux 代碼 開發(fā)

2011-01-26 09:40:42

.NET開發(fā)

2011-06-15 15:29:25

Qt C++

2012-07-05 09:33:49

Nexus 7

2010-05-27 12:30:52

MySQL工具

2012-06-25 10:13:00

Java.NET

2016-12-30 11:10:32

Hadoop開發(fā)JVM

2011-09-05 17:07:45

MTK手機軟件

2017-06-30 15:58:07

Android開發(fā)內(nèi)存

2011-09-14 09:30:27

2015-09-25 10:02:52

BlocksDelegates開發(fā)
點贊
收藏

51CTO技術(shù)棧公眾號