作者neo5277 (I am an agent of chaos)
看板C_Sharp
標題[問題] 關於button的使用
時間Tue Sep 30 17:24:33 2014
因為需要寫一個井字遊戲
物件UI都已經拉好了,老師也教了會重複X,O的方法。
UI
http://ppt.cc/857k
程式碼如下
----------------------
namespace 井字
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
foreach (Control G in this.Controls)
{
G.BackColor = Color.BlueViolet;
G.ForeColor = Color.Cyan;
G.Click += G_Click;
}
}
bool flag = true;
void G_Click(object sender, EventArgs e)
{
if (flag == true)
{
((Button)sender).Text = "X";
}
else
{
((Button)sender).Text = "O";
}
flag = !flag;
}
private void button12_Click(object sender, EventArgs e)
{
this.Close();
}
private void button11_Click(object sender, EventArgs e)
{
// this.G_Click
}
}
}
------------------------
button 11 預計是放 重啟遊戲
我的問題在於
現在運用 foreach 把9個 button打包成一起
然後變成一個G_Click
bool的判斷我還懂因為是針對整塊下去寫的
哪假設今天我要做到如下的要求的話
1格子不能重複點擊
2判斷輸贏
3和局
4 X|O 為贏家
-------------------------------
請問我該怎麼把她一個個作判別呢?
我覺得我個觀念還是有點不懂 有勞各位前輩M(_ _)M
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 125.227.255.79
※ 文章網址: http://www.ptt.cc/bbs/C_Sharp/M.1412069076.A.257.html
※ 編輯: neo5277 (125.227.255.79), 09/30/2014 17:27:47
推 stu87616: 自己另外紀錄一個bool陣列 把哪幾個按鈕的狀態存著 09/30 17:58
→ stu87616: 按下時就去看那格的資料 然後做反應 09/30 17:59
指定不能用陣列~~所以這個辦法可能不行~~~
※ 編輯: neo5277 (125.227.255.79), 09/30/2014 18:14:59
→ sosokill: 1.enable/disable 或判斷text是否為空 2.click的時候去 09/30 18:23
→ sosokill: 判斷是其他btn的狀態(同1) 3.同2 or 紀錄以點擊次數 09/30 18:25
→ sosokill: 4.同2的時候判斷 09/30 18:25
推 stu87616: 怎麼會不能用陣列? 還是你不知如何判斷是按到哪個button 09/30 22:27
→ stu87616: 兩招簡單的 一個是一開始就做一個9格button陣列 09/30 22:28
→ stu87616: 把1~9button填進去 這樣在G_Click就可以用==找是哪個 09/30 22:28
→ stu87616: 或是在button上動手腳,例如用Tag來存這個button的編號 09/30 22:29
可以用但是老師條件是 不能用陣列 不然這個模式用陣列比較方便
※ 編輯: neo5277 (1.162.69.11), 09/30/2014 23:04:34
→ sosokill: btn上不是有btnID 照順序排好 取得btn ID就可以判斷啦 10/01 09:57
推 rocson: BUTTON ID 由左而右由上而下 設為: 10/01 16:11
→ rocson: bn11 bn12 bn13 10/01 16:11
→ rocson: bn21 bn22 bn23 10/01 16:11
→ rocson: bn31 bn32 bn33 10/01 16:12
→ rocson: 然後 去判斷 11-22-33 31-22-13 11-12-13 -21-22-23 等 10/01 16:14
→ rocson: 看 有哪個 的 按鈕 FLAG 都是相同 的勝(最簡單,最笨的方法 10/01 16:15
→ pkmu8426: 禁陣列 那用一堆變數 或list記狀態也一樣可行XDDDDD 10/03 11:40