0

我在 xcode 中做一个井字游戏。这是我的代码

    - (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。有什么问题?

4

1 回答 1

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;
}
于 2013-02-10T09:31:13.297 回答