Ios Tic-tac-toe编程
出于某种原因,checkForWin函数总是返回“否” 因此,我无法找回获胜者 否则,如果建议一个不同的逻辑来判断胜利者 每次用户放置符号时,我都会使用此函数Ios Tic-tac-toe编程,ios,tic-tac-toe,Ios,Tic Tac Toe,出于某种原因,checkForWin函数总是返回“否” 因此,我无法找回获胜者 否则,如果建议一个不同的逻辑来判断胜利者 每次用户放置符号时,我都会使用此函数 -(BOOL) checkForWin{ NSLog(@"yes"); // HORIZONTAL WINS if((s1.image == s2.image) & (s2.image == s3.image) & (s1.image != NULL)) {
-(BOOL) checkForWin{
NSLog(@"yes");
// HORIZONTAL WINS
if((s1.image == s2.image) & (s2.image == s3.image) & (s1.image != NULL))
{
return YES;
}
else if((s4.image == s5.image) & (s5.image == s6.image) & (s4.image != NULL))
{
return YES;
}
else if((s7.image == s8.image) & (s8.image == s9.image) & (s7.image != NULL))
{
return YES;
}
// VERTICAL WINS
else if((s1.image == s4.image) & (s4.image == s7.image) & (s1.image != NULL))
{
return YES;
}
else if((s2.image == s5.image) & (s5.image == s8.image) & (s2.image != NULL))
{
return YES;
}
else if((s3.image == s6.image) & (s6.image == s9.image) & (s3.image != NULL))
{
return YES;
}
// DIAGONAL WINS
else if((s1.image == s5.image) & (s5.image == s9.image) & (s1.image != NULL))
{
return YES;
}
else if((s3.image == s5.image) & (s5.image == s7.image) & (s3.image != NULL))
{
return YES;
}
//right now return 1 becuase we havn't implemented this yet
else{
return NO;
}
}
-(void)displayWinner{
if([self checkForWin] == YES){
if(playerToken==1){
lbl2.text =@"X is the WINNER";
} else {
lbl2.text =@"O is the WINNER";
}
}
}
也许你可以写
if([s1.image isEqual:s2.image2]){
}
此代码而不是此控制语句
if((s1.image == s2.image) & (s2.image == s3.image) & (s1.image != NULL))
{
return YES;
}
我的答案可能是正确的
原因是,您正在将引用与图像进行比较,而不是与图像数据进行比较。参考文献可能不同,而数据可能不同
他建议你比较数据而不是参考资料
但在我的建议中,实际上应该向s对象添加一个成员,其中包含一个三态值。可以是一个整数
/**
s.x is avalue indicating which image is shown (x, O, or empty)
x > 0 means 'X'
x == 0 means 'O'
x < 0 means empty
**/
然后在指定图像时进行设置。检查一下。
否则,您将浪费时间比较数据,以获得完全相同的最终结果。您确定要使用布尔和位,而不是使用逻辑条件运算符&&?并不是说这件事真的有什么不同。。。多难看的一个if.else.的组合啊。。用于检查优胜者组合的语句。。。它伤了我的眼睛……:?谢谢它起作用了,是的,效率提示也会起作用!