我在xcode中做了一个tic tac toe游戏。这是我的代码
- (IBAction)c1Button:(id)sender {
if ((status.text = @"X goes now"))
{
c1.text = @"X";
if ([c1.text isEqualToString: @"X"])
{
status.text = @"O goes now";
}
else
{
status.text = @"X goes now";
}
}
else if ((status.text = @"O goes now"))
{
c1.text = @"O";
if ((c1.text = @"O"))
{
status.text = @"X goes now";
}
else
{
status.text = @"O goes now";
}
}
}
单击第一个单元格时,X应该出现。并且状态标签现在变为O.但是当单击单元格时,它仍会写入X而不是O.出了什么问题?
答案 0 :(得分:3)
在第一个if
语句中,您将其指定为字符串而不是比较它。这样:
if ((status.text = @"X goes now"))
应该是:
if ([status.text isEqualToString:@"X goes now"])
第二个陈述也是如此。
此外,最好保持状态(作为整数或布尔值),而不是每次都使用标题来解析状态。
#define X_TURN 0
#define O_TURN 1
// ....
if (turn == X_TURN)
{
c1.text = @"X";
status.text = @"O goes now";
turn = O_TURN;
}
else
{
c1.text = @"O";
status.text = @"X goes now";
turn = X_TURN;
}