2013-07-08 196 views
0

我在iOS開發初學者所以這裏是我的問題,for循環遞增

我嘗試實現一個簡單的戰艦比賽,我手動把我的船到allCoordinates數組,第一個元素是x座標,第二個元素是y座標,第三個元素是船的大小。

問題是;命中和錯過每次嘗試只增加一次,但當用戶輸入第6艘遊戲時,命中成爲1,並且由於循環繼續檢查每一行並增加錯過,命中成爲5。

我不能只是在錯過++之後休息一下,所以我想出點兒想法。

謝謝:

for (int i=0 ;i<19;i++){ 


    if ([self.xCoordinate.text isEqualToString:[allCoordinates objectAtIndex:i*3]] && 
     [self.yCoordinate.text isEqualToString:[allCoordinates objectAtIndex:i*3+1]]) 

    { 



     NSLog(@"hit"); 

     hit++; 

     result.text = [NSString stringWithFormat:@"You hit %ix1 ship",[allCoordinates objectAtIndex:i*3+2]]; 

     break; 
    }else { 

     NSLog(@"not hit"); 
     result.text = [NSString stringWithFormat:@"You missed"]; 


     missed++; 

    } 

hitLabel.text = [NSString stringWithFormat:@"%i!",hit]; 

missed = missed%18; 

missedLabel.text = [NSString stringWithFormat:@"%i!",missed]; 

,這是我的數組

allCoordinates = [[NSArray alloc] initWithObjects: 
          @"15",@"2",@"3", 
          @"13",@"2",@"3", 
          @"14",@"2",@"3", 
        @"10",@"7",@"3", 
        @"11",@"7",@"3", 
        @"12",@"7",@"3", 
        @"16",@"8",@"3", 
        @"16",@"9",@"3", 
        @"16",@"10",@"3", 
          @"3",@"4",@"4", 
          @"4",@"4",@"4", 
          @"5",@"4",@"4", 
          @"6",@"4",@"4", 
        @"9",@"10",@"4", 
        @"9",@"11",@"4", 
        @"9",@"12",@"4", 
        @"9",@"13",@"4", 
          @"5",@"14",@"1", 
          @"18",@"17",@"1", 
          nil]; 

編輯:我固定它通過把一個BOOL ishit後的for循環,它固定我的問題

if(ishit==YES){ 

    hit++; 

}else { 
    missed++; 
} 
+0

爲什麼不能在錯過之後放假? –

+0

這並不回答你的問題,但你爲什麼使用包含數字而不僅僅是數字的字符串? – trojanfoe

+0

@GradyPlayer當我第一次嘗試之後錯過了循環停止之後放置了休息,但它必須檢查所有這些。 – judge

回答

2

如果您對點擊感興趣,請在循環中對點擊數進行計數。不要指望錯過。看起來計數並不重要,所以只要使用BOOL即可。循環後,如果有任何命中,則設置命中文本。如果不是,所有都是錯過,你應該設置錯過的文字。

+0

計數確實很重要。按照錯過的計數計算得分 – judge

+0

好吧,我從你的答案中得到靈感,並找到答案謝謝 – judge