2013-07-08 2 views
0

Я новичок в разработке IOS так вот мой вопрос,цикла инкрементации

им пытается реализовать простую игру боевого корабля и я вручную поместил мои корабли в allCoordinates массив, первый элемент координаты х, второй элемент - координата 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 после того, как цикл, и это фиксированная моя проблема

if(ishit==YES){ 

    hit++; 

}else { 
    missed++; 
} 
+0

Почему вы не можете положить перерыв после пропущенного? –

+0

Это не отвечает на ваш вопрос, но почему вы используете строки, содержащие числа, а не просто цифры? – trojanfoe

+0

@GradyPlayer, когда я поставил перерыв после пропущенного завершения цикла после первой попытки, но он должен проверить все из них. – judge

ответ

2

Если вас интересуют хиты, посчитайте хиты во время цикла. Не считайте промахи. Казалось бы, счет не имеет значения, так что просто используйте BOOL, если что-то было поражено. После цикла, если есть какие-то образы, задайте хит-текст. Если нет, все промахи, и вы должны установить пропущенный текст.

+0

счет имеет значение. Оценка будет подсчитана по количеству пропущенных и удаленных – judge

+0

ну, я вдохновлен вашим ответом и нашел ответ спасибо – judge

Смежные вопросы