c# - 井字游戏winforms

标签 c# winforms tic-tac-toe

我知道这行得通,但还有更好的方法吗?

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

        turn = !turn;

最佳答案

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

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

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

之后,您还需要将 playerX 翻转到 O,反之亦然,但您将了解如何执行此操作我估计。 :-)

关于c# - 井字游戏winforms,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32325866/

相关文章:

c# - 为什么我的引用的复制本地属性被禁用?

c# - 在当前实例中打开现有的 Excel 文件

c# - 我如何在 C# 中获得两列 winform 列表框?

vb.net - 检查数组中每个文本框的标签

C# 为单个事件处理程序动态生成按钮

javascript - 我希望在由 "event"触发时显示图像,而其他问题没有任何效果

ruby-on-rails - 如何修复错误 "void value expression"?

c# - 如何修复带有变音符号并被转换为奇怪字符的字符串?

c# - FakeItEasy 抛出 ExpectationException

c++ - 'while' 之前的意外不合格 ID