井字游戏获胜

本文关键字:获胜 游戏 | 更新日期: 2023-09-27 18:10:43

我明白这是有效的,但有没有更好的方法来做到这一点?

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

井字游戏获胜

当你点击一个按钮时,它的点击事件处理程序被执行。这调用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,反之亦然,但我认为您将了解如何做到这一点。: -)

将字体改为:

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