Tic Tac Toe游戏胜利

时间:2015-09-01 07:25:49

标签: c# winforms tic-tac-toe

我知道这有效,但除此之外还有更好的方法吗?

    Button clicked = (Button)sender;
        if (turn)
        {
            clicked.Text = player;
        }
        else {
            clicked.Text = cpu;
        }

        turn = !turn;

2 个答案:

答案 0 :(得分:6)

单击按钮时,将执行click事件处理程序。这会调用您的tictactoe功能。在那里,您的代码从上到下执行,首先检查数组中第一个按钮的.Text并进行调整。然后你的If..Else块结束。在下一次单击时重复此操作。这导致了这种行为。

相反,您应该将sender对象转换为Button,并且只对此有效。不需要整个If..Else块。 Sender是引发事件的对象(此处:单击的按钮)。

public void tictactoe(object sender, EventArgs e)
{
    Button b = (Button)sender;
    if (string.IsNullOrEmpty(b.Text)) {
        b.Text = player;
    }
}

之后你还需要将playerX翻到O,反之亦然,但我会知道如何做到这一点。 : - )

答案 1 :(得分:1)

将tictactoe更改为:

public void tictactoe(object sender, EventArgs e)
{
    var button = (Button)sender;
    if (button.Text == "")
        button.Text = player;
}