[問題] 關於button的使用

看板C_Sharp作者 (I am an agent of chaos)時間9年前 (2014/09/30 17:24), 9年前編輯推噓3(3014)
留言17則, 4人參與, 最新討論串1/2 (看更多)
因為需要寫一個井字遊戲 物件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

09/30 17:58, , 1F
自己另外紀錄一個bool陣列 把哪幾個按鈕的狀態存著
09/30 17:58, 1F

09/30 17:59, , 2F
按下時就去看那格的資料 然後做反應
09/30 17:59, 2F
指定不能用陣列~~所以這個辦法可能不行~~~ ※ 編輯: neo5277 (125.227.255.79), 09/30/2014 18:14:59

09/30 18:23, , 3F
1.enable/disable 或判斷text是否為空 2.click的時候去
09/30 18:23, 3F

09/30 18:25, , 4F
判斷是其他btn的狀態(同1) 3.同2 or 紀錄以點擊次數
09/30 18:25, 4F

09/30 18:25, , 5F
4.同2的時候判斷
09/30 18:25, 5F

09/30 22:27, , 6F
怎麼會不能用陣列? 還是你不知如何判斷是按到哪個button
09/30 22:27, 6F

09/30 22:28, , 7F
兩招簡單的 一個是一開始就做一個9格button陣列
09/30 22:28, 7F

09/30 22:28, , 8F
把1~9button填進去 這樣在G_Click就可以用==找是哪個
09/30 22:28, 8F

09/30 22:29, , 9F
或是在button上動手腳,例如用Tag來存這個button的編號
09/30 22:29, 9F
可以用但是老師條件是 不能用陣列 不然這個模式用陣列比較方便 ※ 編輯: neo5277 (1.162.69.11), 09/30/2014 23:04:34

10/01 09:57, , 10F
btn上不是有btnID 照順序排好 取得btn ID就可以判斷啦
10/01 09:57, 10F

10/01 16:11, , 11F
BUTTON ID 由左而右由上而下 設為:
10/01 16:11, 11F

10/01 16:11, , 12F
bn11 bn12 bn13
10/01 16:11, 12F

10/01 16:11, , 13F
bn21 bn22 bn23
10/01 16:11, 13F

10/01 16:12, , 14F
bn31 bn32 bn33
10/01 16:12, 14F

10/01 16:14, , 15F
然後 去判斷 11-22-33 31-22-13 11-12-13 -21-22-23 等
10/01 16:14, 15F

10/01 16:15, , 16F
看 有哪個 的 按鈕 FLAG 都是相同 的勝(最簡單,最笨的方法
10/01 16:15, 16F

10/03 11:40, , 17F
禁陣列 那用一堆變數 或list記狀態也一樣可行XDDDDD
10/03 11:40, 17F
文章代碼(AID): #1KAdRK9N (C_Sharp)
文章代碼(AID): #1KAdRK9N (C_Sharp)