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に変わります。しかし、セルがクリックされても、OではなくXが書き込まれます。何が問題なのですか。

4

1 に答える 1

3

最初のifステートメントでは、比較する代わりに文字列として割り当てます。これ:

if ((status.text = @"X goes now"))

する必要があります:

if ([status.text isEqualToString:@"X goes now"])

そして、同じことが2番目のステートメントにも当てはまります。

また、状態を(整数またはブール値として)保持し、タイトルを使用して毎回状態を解決しないことをお勧めします。

#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 に答える