我对我正在开发的iPhone游戏有疑问。目前,下面是我正在使用的代码,目前我循环遍历我的多维数组并相应地在我的场景中定位砖块。而不是在我的代码中有多个二维数组,如下所示(gameLevel1)。
理想情况下,我想从项目中的文本文件中读取并循环显示其中的值。
请注意我想在我的游戏中有多个级别(可能是20个),所以我的文本文件必须有某种分隔线项来确定我想要呈现的级别。
我当时正在考虑使用某种方法调用该方法,并且该方法将采用我对渲染感兴趣的级别编号。
e.g。根据分隔符调用级别的方法?
-(void)renderLevel:(NSString *)levelNumber;
方法用法:
[self renderLevel:@"#LEVEL_ONE"];
e.g。文本文件示例?
#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];
}
}
答案 0 :(得分:1)
将每个级别放在一个单独的文件中会使加载更快,特别是对于以后的级别,会提供更大的灵活性,并且可能更容易实现。对于您计划使用的级别数,这些要点仅仅是学术性的。
但是,我不确定你的问题是什么。我看到一些问号,但似乎并没有结束问题。您是否介意用实际问题更新您的问题?答案 1 :(得分:0)
看起来你想要解析一个文件,在这个问题中回答了Objective-C:How do I parse a text file in Objective-C?
对于您的情况,我认为您需要确定每一行是“#Level X#”行还是一行块。然后你可以使用相同的componentsSeparatedByString函数(传递@“,而不是@”\ n“)来为你提供一行中所有块的数组,以添加到你自己创建的NSMutableArray中。
作为个人设计选择,我宁愿将每个级别放在一个单独的文件中。这允许将来添加/更新级别,而无需更新包含所有现有级别的文件。