在游戲邏輯類裡有幾十行的變量定義也不足為奇。特別對於j2me來說更是如此,為了節省內存空間很多人捨棄了面向對象的特性把代碼擠在一塊。通常的情況是自已被自已的代碼給淹死了!!所以在做結構設計時我很注重這一點,總是試圖讓代碼節省一點擴展性多一點。這件事並不算很難只要認真去推敲總可以發現一些可以優化的東西,變量就是一例。大多數人更習慣於一個屬性一個變量,舉個例子假設要表示一個人物的屬性你可能會這麼做:
int 生命;
int 魔法;
int 金錢;
int 攻擊力;
int 防御力;
int 人物所在的x軸;
int 人物所在的y軸
int 人物所在的行
int 人物所在的列
int 人物當前的動作
int 人物當前行走的方向
…..
這只是一部份,相信要為這麼多的變量命名是一件困難的事,特別是英文不好的同志。大家現在可能已經看出來了使用數組是最好的辦法。至少有兩個好處 1 所有的變量定義變成一行 int fairy[] ,變量被收拾得干淨淨甚至有點對象的味道,當要寫該人物相關的代碼時你會不假思索地打出 fair[] 。 2 具有擴展性 。這是容易讓人忽視的一點,當該人物有新的屬性時你可以用 fair[x+1] 的格子來表示它一點也不受影響,當然前提是數據類型必須一致。
數組應用典型的一例是表示地圖。假設我們要做一張rpg的地圖大多數人的第一反應就是用二維數組表示map[行][列] 看起來似乎合情合理,但是問題來了可能我想讓地圖上的某些東西動起來。 這就必須加上幾個變量 1 當前顯示的圖片,2 剩余多久切換圖片。 這只是最普通的情況,可遇到的問題還更多。我們不可能給每個會動的地方都定義變量,那樣太得不償失了,為此三維數組出現了現在把地圖的表示如下
int map[行][列][屬性] ;
map [][][0] 表示圖片類別
map [][][1] 表示圖片當前播放到第幾張
map [][][2] 還剩多久切換圖片
map [][][3] 該位置是否可以行走
map [][][4] 是否觸發對話 0 表示否 其余表示對話的id
…..
我們優雅地把地圖相關的東西都很好地表示在一個數組裡,想像一下如果不使用三維數組將會是什麼樣的狀況。