2012-07-25 70 views
0

我很新的Xcode /編程,並試圖修改現有的代碼XCODE - 如何更新數組?

我有一個小問題,我在屏幕上有一個特定的時間量的對象(敵人),無法重新定義它們的值。我讓我的敵人在屏幕上以3開頭。

我的目標是根據當前得分來改變敵人的數量。

我附上了下面的代碼片段。

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

什麼我需要做解析的numberOfEnemies的新值時,我的成績更新的陣列?

+0

哪個數組?我認爲你需要展示更多的代碼。 – pb2q 2012-07-25 21:43:11

+0

你現在展示的代碼是在某種更新函數中?包含敵人的陣列的大小是多少?我猜你重複使用它們,或者它們現在只是靜態/非交互式? – 2012-07-25 21:44:36

+0

@ pb2q請參閱更新數組組件。希望這有助於 – Anthony 2012-07-25 21:52:03

回答

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的遊戲教程。

希望幫助!