2012-07-25 3 views
0

Xcode/프로그래밍에 익숙하며 기존 코드를 수정하려고합니다.XCODE - 배열을 업데이트하는 방법?

특정 시점에 화면에 물건 (적)이 있고 값을 재정의 할 수없는 작은 문제가 있습니다. . 내 원수가 화면에서 3으로 시작하도록했습니다.

나의 목표는 현재 점수를 기준으로 적의 양을 변경하는 것입니다.

아래 코드의 스 니펫을 첨부했습니다. 내가 할 때 내 점수 업데이트 배열에 numberOfEnemies의 새로운 값을 구문 분석 할 필요가 무엇

int numberOfEnemies; 

if (self.score>=0) { 
numberOfEnemies = 3 
} 

else if (self.score>=100) { 
numberOfEnemies = 4 
} 


// Setup array 

enemyArray = [[NSMutableArray alloc] init]; 

for(int i = 0; i < numberOfEnemies; i++) { 
    [enemyArray addObject:[SpriteHelpers setupAnimatedSprite:self.view numFrames:3 
    withFilePrefix:@"enemyicon" withDuration:((CGFloat)(arc4random()%2)/3 + 0.5) 
    ofType:@"png" withValue:0]]; 
} 

enemyView = [enemyArray objectAtIndex:0]; 

?

+0

어느 어레이입니까? 나는 당신이 조금 더 많은 코드를 보여줄 필요가 있다고 생각한다. – pb2q

+0

지금 보여주는 코드는 일종의 업데이트 기능입니다. 당신의 적을 포함하는 배열의 크기는 얼마입니까? 나는 당신이 그들을 재사용했는지, 아니면 현재 정적/비 대화 형인가? –

+0

@ pb2q 업데이트 배열 구성 요소를 참조하십시오. 희망이 도움이 – Anthony

답변

0

나는 너무 오랜 바람을 피고 싶지 않기 때문에 우리 대화를 대답으로 옮길 것이다. 나는 이것을 쉽게 편집하고 확장 할 수있다.

지금까지 문제가 발생한 이유는 viewDidLoad 함수에서 위의 코드를 실행한다는 것입니다.이 코드는 응용 프로그램을 처음 시작할 때 한 번 이상 실행됩니다. 이것에 대한 문제는 당신이 알아 낸대로 새로운 점수를 볼 수있는 기회를 얻지 못하고 적의 수를 업데이트한다는 것입니다.

iOS 용 게임 업데이트 루프는 대개 다음 구조로 이루어 지지만 온라인으로 튜토리얼을 찾는 것이 더 효율적이고 정확한 방법 일 수 있는지 알아볼 것을 권합니다.

현재의 구조에서

, 나는 그것의 새로운 기능을 위에있는 코드를 가지고 만들 것입니다 :

:

-(void) updateDifficulty:(NSTimer *)gameTimer 
{ 
    //This can be the code you have above for now 
} 

그 후, 당신의 viewDidLoad의 내부에, 나는 다음과 같은 코드를 넣어 것입니다

-(void) viewDidLoad: 
{ 
    gameTimer = [NSTimer timerWithTimeInterval:1.0 target:self selector:@selector(updateDifficulty:) userInfo:nil repeats:YES]; 
    [[NSRunLoop mainRunLoop] addTimer:gameTimer forMode:NSDefaultRunLoopMode]; 
} 

게임 시간을 추적하는 타이머를 선언하고 선언 된 방식으로 1 초마다 updateDifficulty 메서드를 호출합니다. 이것은 일반적인 구조이지만, 다시 한 번 예를 들어 Ray Wenderlich의 게임 튜토리얼을 읽어 보시기 바랍니다.

희망 하시겠습니까?

관련 문제