2012-08-03 70 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]); 
    } 
}