在 J2ME 遊戲開發中,記憶體與效能極為有限。許多開發者為了節省空間,犧牲物件導向設計,將大量變數堆砌在邏輯類別中,導致程式碼難以維護。本文分享如何善用一維與多維陣列,整理角色屬性與地圖資料,提升程式碼可讀性與擴充性。
習慣為每個屬性宣告獨立變數:
int hp, mp, money, atk, def, posX, posY, row, col, action, dir, ...
缺點:命名困難、變數散亂、新增屬性需修改多處。
定義單一整數陣列:
int[] fairy = new int[屬性總數];
優勢:
fairy[index]。傳統 RPG 地圖常用 map[行][列] 存放圖塊索引。但當地圖需包含動態元素(如動畫圖塊、觸發事件)時,勢必另增變數追蹤:目前播放幀、切換倒數、可通行性、對話 ID 等,導致變數爆炸。
採用 int map[行][列][屬性],第三維度索引定義如下:
| 索引 | 含義 |
|---|---|
| 0 | 圖塊類別(圖片索引) |
| 1 | 目前播放幀 |
| 2 | 距下次切換幀的倒數 |
| 3 | 是否可通行 |
| 4 | 觸發對話 ID(0 表無) |
| ... | 可依需求擴充 |
所有地圖相關資訊集中於單一陣列,邏輯清晰,避免大量平行陣列或物件帶來的額外負擔。
陣列是 J2ME 開發中極具性價比的資料結構。善用一維陣列整合實體屬性、三維陣列封裝地圖狀態,能在有限資源下兼顧效能與維護性,是每位行動遊戲開發者必備的優化技巧。