出于某种奇怪的原因, 否则如果 条件未得到满足则宣布获胜者。我调试并跟踪了该条件的值,它为3个变量保留值2,但不会触发满足条件的 NSLog 。我错过了明显的血腥或真的很累(是的......我很累)?花了好几个小时试图解决这个问题。符合 X 条件并执行它的 NSLog 声明......但是对于我的生命...... O没有。
我已经尝试过了{}我已经尝试过没有{}了。我已经尝试了一切......坚持下去。
我尝试了O值的条件,但它没有用。 Hmmmm。它不喜欢那该死的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。帮助...
答案 0 :(得分:3)
你应该尝试两件事。
首先是改变所有单曲'&'加倍'&&' (假设您正在检查AND。
第二个是询问每个变量是否等于1而不是将它们全部混合在一起。
一个好的if语句看起来像这样:
if(tl_Int == 1 && tm_Int == 1 && tr_Int == 1)
答案 1 :(得分:0)
尝试计算tl_Int& tm_Int& tr_Int并将其分配给临时变量,然后在if / elseif条件中使用它。 - 没试过,但你可能想尝试一下
答案 2 :(得分:0)
只需更改所有单曲'&'加倍'&&'你的问题会解决。
根据你的情况,NSLog调用取决于tr_Int
的值,如果它将为1,那么它将调用第一个NSLog,如果它是2,那么它将调用第二个,否则为第三个。
IT只是检查 tr_Int ==
的条件