何らかの奇妙な理由で、else if条件が満たされていないため、勝者を宣言できません。その条件の値をデバッグしてトレースしました。3 つの変数の値 2 を保持していますが、満たされた条件のNSLogをトリガーしません。私は血まみれの明らかなことを見逃していますか、それとも本当に疲れていますか(はい...私はとても疲れています)?これを理解するのに何時間も費やしました。X条件が満たされ、そのNSLogステートメントが実行されます...しかし、私の人生では... Oはそうではありません。
{ } を試しました { } を試しませんでした。私はほぼすべてを試しました...ちょっと待ってください。
O 値の条件だけを試してみましたが、うまくいきませんでした。うーん。それはいまいましい 2 が好きではありません !へへへ。
-(void)chkWinner
{
NSLog(@"At the top of Check Winner method, player %d %d %d ", tl_Int, tm_Int, tr_Int);
if(tl_Int & tm_Int & tr_Int == 1)
{
NSLog(@" X is the WINNER %d %d %d", tl_Int, tm_Int, tr_Int);
}
else if(tl_Int & tm_Int & tr_Int == 2)
{
NSLog(@" O is the WINNER %d %d %d", tl_Int, tm_Int, tr_Int);
}
else
{
NSLog(@"In Check Winner method, player %d %d %d ", tl_Int, tm_Int, tr_Int);
}
}
押されているボタンのコードは次のとおりです。値をメソッドに渡します...なぜそれが一方の値では機能し、もう一方の値では機能しないのかわかりません。
-(IBAction) topLeftBtn:(id) sender
{
if(playerX.enabled == true)
{
tl_Int = 1;
NSLog(@" X %d ", tl_Int);
[tlBtn setImage:[UIImage imageNamed:@"X.png"] forState:UIControlStateNormal];
playerX.enabled = false;
tlBtn.enabled = false;
blockingBtn.enabled = true;
blockingBtn.hidden = false;
topLSquare.image = [UIImage imageNamed:nil];
SEL methodSelector1 = @selector(chkWinner);
[NSTimer scheduledTimerWithTimeInterval:0 target:self selector:methodSelector1 userInfo:nil repeats:NO];
}
if(playerO.enabled == true)
{
tl_Int = 2;
NSLog(@"TL O %d ", tl_Int);
[tlBtn setImage:[UIImage imageNamed:@"O.png"] forState:UIControlStateNormal];
playerO.enabled = false;
tlBtn.enabled = false;
blockingBtn.enabled = true;
blockingBtn.hidden = false;
topLSquare.image = [UIImage imageNamed:nil];
SEL methodSelector1 = @selector(chkWinner);
[NSTimer scheduledTimerWithTimeInterval:0 target:self selector:methodSelector1 userInfo:nil repeats:NO];
}
}
出力ウィンドウも次のとおりです。
2013-07-25 00:43:08.167 [16079:c07] TR O 2
2013-07-25 00:43:08.170 [16079:c07] At the top of Check Winner method, player 0 0 2
2013-07-25 00:43:08.172 [16079:c07] In Check Winner method, player 0 0 2
2013-07-25 00:43:10.934 [16079:c07] TM O 2
2013-07-25 00:43:10.938 [16079:c07] At the top of Check Winner method, player 0 2 2
2013-07-25 00:43:10.939 [16079:c07] In Check Winner method, player 0 2 2
2013-07-25 00:43:14.444 [16079:c07] TL O 2
2013-07-25 00:43:14.447 [16079:c07] At the top of Check Winner method, player 2 2 2
2013-07-25 00:43:14.449 [16079:c07] In Check Winner method, player 2 2 2
値はありますが、条件が満たされていることを示す NSLog 出力はありません... ブレークポイントを発行してデバッグに入り、コードにステップインし、条件が満たされたときに NSLog の上を歩きます。ヘルプ...