Java ME 遊戲開發基於「配置 + 設定檔」架構。本文以 CLDC 1.1 + MIDP 2.0 為目標平台,示範如何使用 NetBeans Visual Game Designer(遊戲產生器)結合 javax.microedition.lcdui.game API 快速建構 2D 遊戲。

範例素材包含 16×16 像素的背景、建築、角色圖塊。匯入時指定分割尺寸,產生器自動編號(左上角為 1,0 代表空白)。


在 2D 編輯器中以圖塊編號繪製地圖,資料儲存為二維整數陣列:
int tiles[][] = {
{ 7, 3, 17, 6, 6, 6, 6, 35, 23, 16, 16, ... },
{ 7, 3, 5, 16, 16, 16, 16, 16, 26, 16, ... },
...
};
自動產生的 Getter 方法:
public TiledLayer getMyTiledLayer() throws IOException {
if (myTiledLayer == null) {
myTiledLayer = new TiledLayer(24, 23, getMyImage(), 16, 16);
// 迴圈呼叫 setCell(col, row, tiles[row][col]) 填充
}
return myTiledLayer;
}

將多個圖塊定義為動畫序列(如火焰搖曳 4 幀,200ms 間隔):
int[] animTorchSeq = {89, 90, 91, 92};
int animTorch = tiledLayer.createAnimatedTile(animTorchSeq[0]);
在二維陣列中使用 animTorch 索引即可在對應位置顯示動畫。


角色動作分解為多方向動畫:向下走、向上走、向左右走。每個方向對應一組影格序列。產生器儲存影格索引陣列,實際移動邏輯需自行撰寫程式碼控制。

場景由多圖層疊加組成(基底層 → 水層 → 物件層 → 樹木層),並配置 Sprite 初始位置。Z-order 欄位控制渲染順序(0 為最上層)。
// 碰撞檢測範例
if (spriteThomas.collidesWith(tileLayerTrees, true)) {
// 處理撞到樹木的邏輯
}


產生器負責視覺資源準備與 Getter 產生,核心遊戲邏輯(主迴圈、輸入處理、狀態機、碰撞回應、AI、關卡推進)仍需在 GameCanvas 子類別中手寫。建議參考專業遊戲開發書籍深入學習。
File > New Project > Samples > Mobility > MIDP > "Simple Game Using Game Builder" 開啟範例專案立即體驗。