/ / Potrebujete pomoc so smyčkovaním cez textový súbor v Objective-C namiesto toho, aby ste prechádzali cez multidimenzionálne pole na zobrazenie CCSprites - iphone, Objective-C, Matrix, Multidimenzionálne pole, Cocos2d-iphone

Potrebujete pomôcť cyklické prostredníctvom textového súboru v Objective-C namiesto cyklické prostredníctvom viacrozmerné pole Zobraziť CCSprites - iphone, cieľ-c, matrix, viacrozmerné pole, cocos2d-iphone

Mám otázku týkajúcu sa hry pre iPhone, ktorú somrozvoj. V tejto chvíli je dole kód, ktorý momentálne používam na prechádzanie mojím multidimenzionálnym poľom a zodpovedajúce umiestnenie tehál na mojej scéne. Namiesto toho, aby som mal v kóde viacero dvojrozmerných polí, ako je uvedené v nasledujúcom texte (gameLevel1).

V ideálnom prípade by som chcel čítať z textového súboru v rámci môjho projektu a namiesto toho prechádzať cez hodnoty, ktoré sú v ňom.

Vezmite prosím na vedomie, že by som ich chcel maťviac ako jedna úroveň v mojej hre (možno 20), takže môj textový súbor by musel mať nejaký oddeľovač riadkovej položky, aby určil, akú úroveň chcem vykresliť.

Potom som premýšľal o tom, že budem mať nejaký spôsob, ktorý nazývam a ktorý by previedol úroveň, ktorú by som chcel vykresliť.

napr. Spôsob volania na základe oddeľovača?

- (void) renderLevel: (NSString *) levelNumber;

Použitie metódy:

[self renderLevel: @ "# LEVEL_ONE"];

napr. Príklad textového súboru?

#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

Kód, ktorý momentálne používam:

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

odpovede:

0 pre odpoveď č. 1

Zdá sa, že chcete analyzovať súbor, na ktorý v tejto otázke odpovedá objekt Objective-C: Ako môžem analyzovať textový súbor v Objective-C?

Pre váš prípad si myslím, že by ste to chceli zistiťči je každý riadok riadkom „#Level X #“ alebo radom blokov. Potom by ste mohli použiť tú istú funkciu componentsSeparatedByString (absolvovanie @ "," namiesto @ "n"), aby ste získali pole všetkých blokov v rade, ktoré chcete pridať do NSMutableArray svojej vlastnej tvorby.

Ako výber osobného dizajnu by som radšej nechal každú úroveň v samostatnom súbore. To umožňuje budúce pridávanie / aktualizáciu úrovní bez toho, aby som musel aktualizovať súbor obsahujúci všetky existujúce úrovne.


1 pre odpoveď č. 2

Mať každú úroveň v samostatnom súbore by urobilorýchlejšie načítanie, najmä pre neskoršie úrovne, by ponúklo väčšiu flexibilitu a pravdepodobne by sa implementovalo o niečo ľahšie. Tieto body sú iba akademické pre počet úrovní, ktoré plánujete použiť.

Nie som si úplne istý, či máte otázku. Vidím niekoľko otáznikov, ale zdá sa, že otázky nekončia. Nevadilo by vám aktualizovať svoju otázku skutočnou otázkou?