/ / Potrzebujesz pomocy w zapętlaniu pliku tekstowego w Objective-C zamiast w pętli przez tablicę wielowymiarową w celu wyświetlenia CCSprites - iphone, object-c, matrix, multidimensional-array, cocos2d-iphone

Potrzebujesz pomocy w zapętleniu pliku tekstowego w Objective-C zamiast przechodzenia przez wielowymiarową tablicę do wyświetlania CCSprites - iphone, cel-c, matrix, tablica wielowymiarowa, cocos2d-iphone

Mam pytanie dotyczące gry na iPhone'arozwijanie się. W tej chwili poniżej znajduje się kod, którego używam, aby teraz przechodzić przez moją wielowymiarową tablicę i odpowiednio ustawiać klocki na scenie. Zamiast mieć wiele dwuwymiarowych tablic w moim kodzie, zgodnie z poniższym (gameLevel1).

Idealnie, chciałbym czytać z pliku tekstowego w moim projekcie i zamiast tego przeglądać w nim wartości.

Proszę wziąć pod uwagę, że chciałbym miećwięcej niż jeden poziom w mojej grze (prawdopodobnie 20), więc mój plik tekstowy musiałby zawierać element oddzielający, aby określić, jaki poziom chcę renderować.

Zastanawiałem się wtedy nad jakąś metodą, którą wywołam, i ta metoda przyjmie numer poziomu, który jestem zainteresowany renderowaniem.

na przykład Metoda wywołania poziomu na podstawie separatora?

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

Zastosowanie metody:

[self renderLevel: @ "# LEVEL_ONE"];

na przykład Przykład pliku tekstowego?

#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

Kod, którego obecnie używam:

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

Odpowiedzi:

0 dla odpowiedzi № 1

Wygląda na to, że chcesz analizować plik, na który odpowiedzią jest Objective-C w tym pytaniu: Jak przeanalizować plik tekstowy w Objective-C?

W twoim przypadku myślę, że chciałbyś to ustalićczy każda linia jest linią „#Level X #”, czy rzędem bloków. Następnie możesz użyć tej samej funkcji componentsSeparatedByString (przekazując @ "," zamiast @ "n"), aby uzyskać tablicę wszystkich bloków w linii, aby dodać ją do NSMutableArray własnego stworzenia.

Jako osobisty wybór projektu, wolałbym mieć każdy poziom w oddzielnym pliku, co pozwala w przyszłości dodawać / aktualizować poziomy bez konieczności aktualizowania pliku zawierającego wszystkie istniejące poziomy.


1 dla odpowiedzi nr 2

Umieszczenie każdego poziomu w osobnym pliku sprawiłoby, żeszybsze ładowanie, szczególnie na późniejszych poziomach, zapewniłoby większą elastyczność i prawdopodobnie byłoby odrobinę łatwiejsze do wdrożenia. Te punkty są tylko akademickie dla liczby poziomów, które planujesz użyć.

Nie jestem jednak pewien, jakie jest twoje pytanie. Widzę znaki zapytania, ale nie wydają się one kończyć pytań. Czy mógłbyś zaktualizować swoje pytanie o prawdziwe pytanie?