C# 井字游戏

C# 井字游戏,c#,winforms,tic-tac-toe,C#,Winforms,Tic Tac Toe,我知道这是可行的,但有没有更好的方法 Button clicked = (Button)sender; if (turn) { clicked.Text = player; } else { clicked.Text = cpu; } turn = !turn; 单击按钮时,将执行其单击事件处理程序。这将调用您的tictactoe函数。在这里

我知道这是可行的,但有没有更好的方法

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

        turn = !turn;

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

相反,您应该将
发送者
对象强制转换为
按钮
,并仅处理此项。不需要整个
If..Else
Sender
是引发事件的对象(此处:单击的按钮)


之后,您还需要将
播放器
X
翻转到
O
,反之亦然,但我想您将了解如何操作。:-)

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

相反,您应该将
发送者
对象强制转换为
按钮
,并仅处理此项。不需要整个
If..Else
Sender
是引发事件的对象(此处:单击的按钮)


之后,您还需要将
播放器
X
翻转到
O
,反之亦然,但我想您将了解如何操作。:-)

将tictactoe更改为:

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

将TictoE更改为:

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

这些按钮从未添加到表单中,因此我不知道您正在单击哪个按钮,但它不是数组中的按钮。您的
InitializeComponent()
方法发生了什么事?这些按钮从未添加到表单中,因此我不知道您正在单击哪个按钮,但它不是数组中的按钮。您的
InitializeComponent()
方法发生了什么变化?我不确定这是如何工作的。我添加了这个,它可以工作,但只有当我点击按钮,从点击类型转换的发送者改变了文本,但再次,如果点击,程序将x更改为oI,则会进行更改,以进一步解释正在进行的操作said@june1992最好的方法是在单击中将
.Enabled
属性也设置为False事件此外,不要完全改变你原来的问题,否则答案就没有意义了。打开另一个问题,或在底部添加新数据。@1992年6月1日,您还将我的答案中的
字符串.IsNullOrEmpty(b.Text)
从您的实现中剥离出来。这当然很重要。我不知道这是怎么回事。我添加了这个,它可以工作,但只有当我点击按钮,从点击类型转换的发送者改变了文本,但再次,如果点击,程序将x更改为oI,则会进行更改,以进一步解释正在进行的操作said@june1992最好的方法是在单击中将
.Enabled
属性也设置为False事件此外,不要完全改变你原来的问题,否则答案就没有意义了。打开另一个问题,或在底部添加新数据。@1992年6月1日,您还将我的答案中的
字符串.IsNullOrEmpty(b.Text)
从您的实现中剥离出来。这当然很重要。