Java ME 中提供了一個(gè) Game API (javax.microedition.lcdui.game)。大大方便了程序員在移動(dòng)平臺(tái)上開發(fā)復(fù)雜游戲。一般的游戲可以分為游戲人物及背景,可以將游戲場(chǎng)景分成多個(gè)層次。在 Java ME Game API 中提供了幾個(gè)類。
http://wiki.jikexueyuan.com/project/android-game-design/images/3.jpg" alt="pic" />
Layer 類,該類為一抽象類,提供了游戲人物及背景的層次的基本構(gòu)架,它代表了游戲場(chǎng)景中一個(gè)可視化的元素,如游戲人物(Sprite)或是分片背景(TiledLayer)。
Sprite 類,為一個(gè)基本動(dòng)畫游戲人物,它可以顯示多個(gè)動(dòng)畫幀中其中一幀,比如人向前,向后,向左,向右,坦克大戰(zhàn)游戲中各種坦克就是一個(gè) sprite 類對(duì)象,它可以顯示坦克向四個(gè)方向移動(dòng)的圖象,并可很容易實(shí)現(xiàn)動(dòng)態(tài)效果,如坦克履帶移動(dòng)的動(dòng)態(tài)效果。它也支持了各種碰撞檢測(cè),比如子彈擊中坦克,或是打中磚塊等等。
TiledLayer 類,一般用作顯示游戲背景,為了能顯示范圍較大的背景,一般游戲背景地圖可以通過(guò)小的圖片拼接而成。TiledLayer 用于實(shí)現(xiàn)由一個(gè)二維 cell (分片地圖)組成背景,這個(gè)類也提供了動(dòng)態(tài)背景的支持,比如,坦克大戰(zhàn)背景中水面的動(dòng)態(tài)效果。
而 Andorid 中沒(méi)有提供 Game API,如果大家看過(guò) Android 例子中 snake 的實(shí)現(xiàn),其中 TileView 的功能類似于 Game API 中 TiledLayer。為了使減少移植工作,第一步是將 Java ME 中 Game API 移植到 Android 平臺(tái)。
移植是基于 microemulator 中相應(yīng)代碼,移植工作量不大。在后面會(huì)提供移植后源碼。