我正在研究一個基本的iPhone遊戲,需要單屏幕地圖。那裏沒什麼困難。我來自一個C的背景,所以我目前的解決方案看起來有點像這樣:Objective-C中的二維數組?
typedef struct _Tile {
NSString *type;
} Tile;
@interface Map {
Tile mapData[MAP_TILE_MAX_X][MAP_TILE_MAX_Y];
}
這工作得很好,但我不知道是否有一個稍微更「正確」的方式來處理通過Objective-C的東西。如果我採用Objective-C方法,我將如何看待情況:我會創建一個基本Tile類來保存基本的tile屬性,然後我可以對特定的tile類型進行子類化(例如,@interface Water : Tile {}
)。這將允許我也具有瓷磚特定的邏輯。例如:Tile類可以有一個'think'方法來執行任何必要的邏輯。在我的水子類中,如果玩家被淹沒,可能會產生連鎖反應。
我的問題,然後:
- 是否可以接受在這種情況下要使用C結構?如果沒有,我是否在正確的軌道上關於我的Obj-C方法?
- 如果我要創建一個基類Tile類併爲特定的Tile類型使用子類,我將如何動態實例化每個Tile子類(假設我有一個包含'water'類型的NSString,我需要實例化Water類)。
我知道枚舉。但是你能證明這裏使用struct來代替類嗎?我對使代碼「非常棒」並不特別感興趣,我只是想讓它合適。 – ndg 2010-08-21 22:30:15