0

多次元配列に保存されたタイルマップを必要とするゲームに取り組んでいます。私のゲームでは、必要なすべての保存値を含むNSStringであるこれらのマップをすべて作成しました。私は、NSStringの256個の値すべてをint16x16多次元配列に保存しようとしています。

これが私の現在のコードですが、機能しません

-(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];
        }

    }

}

どんな助けでも大いに感謝します:)

4

2 に答える 2

1

2つの潜在的なエラーがあります。

  • kMapSizeおそらく16に等しくない可能性があります。カジュアルな読者は256にする必要があると考えるため、この変数の名前は誤解を招く可能性があります。おそらく名前を変更しkMapWidthます。
  • mapString256文字ではない可能性があります。[mapString length]の先頭で確認することをお勧めしLoadMapます。
于 2012-08-04T01:49:07.703 に答える
1

以下のコードは問題なく動作します。たぶん2行目がエラーの理由です。

// 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]);
    }
}
于 2012-08-04T14:24:26.373 に答える