我明白,這個工程和所有,但有沒有更好的方式做到這一點?Tic Tac Toe遊戲winforms
Button clicked = (Button)sender;
if (turn)
{
clicked.Text = player;
}
else {
clicked.Text = cpu;
}
turn = !turn;
我明白,這個工程和所有,但有沒有更好的方式做到這一點?Tic Tac Toe遊戲winforms
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;
}
}
之後,您還需要從X
的player
翻轉O
反之亦然,但你會發現如何做到這一點我想。 :-)
更改井字遊戲本:
public void tictactoe(object sender, EventArgs e)
{
var button = (Button)sender;
if (button.Text == "")
button.Text = player;
}
那些按鈕永遠不會添加到您的形式,所以我不知道你點擊了哪個按鈕,但它不是那些在你的陣列。你的'InitializeComponent()'方法發生了什麼? – Sayse