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)
从您的实现中剥离出来。这当然很重要。