我有一個關於正在開發的iPhone遊戲的問題。目前,下面是我目前使用的代碼,通過我的多維數組循環並相應地在我的場景中定位磚塊。根據以下(gameLevel1),我的代碼中沒有多個二維數組。需要幫助循環瀏覽Objective-C中的文本文件,而不是通過多維數組循環顯示CCSprites
理想情況下,我想從我的項目中的文本文件中讀取,並通過其中的值進行循環。
請注意,我希望在我的遊戲中有多個關卡(可能是20個),因此我的文本文件必須具有某種分隔線項目才能確定要呈現的級別。
我當時正在考慮採用某種我稱之爲方法的方法,該方法將採用我感興趣的級別編號。
例如基於分隔符調用級別的方法?
-(void)renderLevel:(NSString *)levelNumber;
使用方法:
[self renderLevel:@"#LEVEL_ONE"];
例如文本文件的例子?我目前使用
#LEVEL_ONE#
0,0,0,0,0,0,0,0,0
0,1,1,1,1,1,1,1,0
0,1,1,1,1,1,1,1,0
0,1,1,1,1,1,1,1,0
0,1,1,1,1,1,1,1,0
0,1,1,1,1,1,1,1,0
0,1,1,1,1,1,1,1,0
0,1,1,1,1,1,1,1,0
0,1,1,1,1,1,1,1,0
0,1,1,1,1,1,1,1,0
0,1,1,1,1,1,1,1,0
0,1,1,1,1,1,1,1,0
0,1,1,1,1,1,1,1,0
0,1,1,1,1,1,1,1,0
0,1,1,1,1,1,1,1,0
0,1,1,1,1,1,1,1,0
0,0,0,0,0,0,0,0,0
#LEVEL_TWO#
1,0,0,0,0,0,0,0,1
1,1,1,1,1,1,1,1,1
1,1,1,1,1,1,1,1,1
1,1,1,1,1,1,1,1,1
1,1,1,1,1,1,1,1,1
0,1,1,1,1,1,1,1,0
1,1,1,1,1,1,1,1,1
0,1,1,1,1,1,1,1,0
1,1,1,1,1,1,1,1,1
0,1,1,1,1,1,1,1,0
1,1,1,1,1,1,1,1,1
0,1,1,1,1,1,1,1,0
1,1,1,1,1,1,1,1,1
1,1,1,1,1,1,1,1,1
1,1,1,1,1,1,1,1,1
1,1,1,1,1,1,1,1,1
1,0,0,0,0,0,0,0,1
代碼:
int gameLevel[17][9] = {
{ 0,0,0,0,0,0,0,0,0 },
{ 0,1,1,1,1,1,1,1,0 },
{ 0,1,1,1,1,1,1,1,0 },
{ 0,1,1,1,1,1,1,1,0 },
{ 0,1,1,1,1,1,1,1,0 },
{ 0,1,1,1,1,1,1,1,0 },
{ 0,1,1,1,1,1,1,1,0 },
{ 0,1,1,1,1,1,1,1,0 },
{ 0,1,1,1,1,1,1,1,0 },
{ 0,1,1,1,1,1,1,1,0 },
{ 0,1,1,1,1,1,1,1,0 },
{ 0,1,1,1,1,1,1,1,0 },
{ 0,1,1,1,1,1,1,1,0 },
{ 0,1,1,1,1,1,1,1,0 },
{ 0,1,1,1,1,1,1,1,0 },
{ 0,1,1,1,1,1,1,1,0 },
{ 0,0,0,0,0,0,0,0,0 }
};
for (int row=0; row < 17; row++)
{
for (int col=0; col < 9; col++)
{
thisBrickValue = gameLevel[row][col];
xOffset = 35 * floor(col);
yOffset = 22 * floor(row);
switch (thisBrickValue)
{
case 0: brick = [[CCSprite spriteWithFile:@"block0.png"] autorelease]; break;
case 1: brick = [[CCSprite spriteWithFile:@"block1.png"] autorelease]; break;
}
brick.position = ccp(xOffset, yOffset);
[self addChild:brick];
}
}