2012-08-03 36 views
0

我正在研究一個需要在多維數組中保存地圖貼圖的遊戲。在我的遊戲中,我將所有這些地圖製作成NSString,並將所有保存的值都存儲起來,我正在將NSString的所有256個值保存到一個int 16x16多維數組中。通過NSString加載地圖

這裏是我當前的代碼但它不工作

-(void)LoadMap:(NSString*)mapString 
{ 
    for(int h = 0; h < kMapSize; h++) 
    { 
     for(int w = 0; w < kMapSize; w++) 
     { 
      map[w][h] = [[mapString substringWithRange:NSMakeRange((h)+(w*kMapSize), 1)] intValue]; 
     } 

    } 

} 

任何幫助將是巨大的三江源:)

+3

什麼對此不起作用? – pasawaya 2012-08-04 00:02:04

+0

會發生什麼,而不是你所期望的?運行時異常?編譯錯誤?不正確的結果數據? BSOD?豬飛?運行結果?通常找出編程問題的關鍵在於關於「不起作用」的具體細節。 – 2012-08-04 00:06:20

+0

您是否在詢問如何標記NSString中的每個值並將其用於多個數組? – vnchopra 2012-08-04 00:38:04

回答

1

有兩個潛在的錯誤:

  • kMapSize可能是不等於16.這個變量有一個誤導性的名字,因爲隨便的讀者會認爲它應該是256.也許重命名爲kMapWidth
  • mapString可能不是256個字符長。您可能需要在LoadMap開頭檢查[mapString length]
+0

我感覺非常愚蠢,但是是字符串是短於256個字符 – 2012-08-05 03:19:20

1

下面的代碼沒有問題。也許第二行是錯誤的原因。

// initial data 
NSInteger kMapSize = 3; 
char map[3][3]; <-- this row ? 
NSString *mapString = @"000111222"; 

// put initial data into 'map' array 
for(int h = 0; h < kMapSize; h++) { 
    for(int w = 0; w < kMapSize; w++) { 
     map[w][h] = [[mapString substringWithRange:NSMakeRange((h)+(w*kMapSize), 1)] intValue]; 
    } 
} 

// confirm whether the data is stored successfully 
for (int h = 0; h < kMapSize; h++) { 
    for (int w = 0; w < kMapSize; w++) { 
     NSLog(@"%d", map[w][h]); 
    } 
}