0

私はiOS開発の初心者なので、ここに私の質問があります.

シンプルな戦艦ゲームを実装しようとしていて、船を allCoordinates 配列に手動で配置しました。最初の要素は x 座標、2 番目の要素は y 座標、3 番目の要素は船のサイズです。

問題は; ヒットとミスは試行ごとに1回だけ増やす必要がありますが、ユーザーが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];

編集:forループの後にBOOL ishitを配置して修正し、問題を修正しました

   if(ishit==YES){

    hit++;

}else {
    missed++;
}
4

1 に答える 1

2

ヒット数に関心がある場合は、ループ中のヒット数を数えます。ミスを数えないでください。とにかくカウントは問題ではないように思われるので、BOOL何かがヒットした場合は単に for を使用してください。ループ後、ヒットがあればヒットテキストを設定します。そうでない場合は、すべてミスであり、ミス テキストを設定する必要があります。

于 2013-07-08T13:58:45.120 に答える