[問題] C#新手 翻牌遊戲問題

看板C_Sharp (C#)作者 (史蒂芬槍)時間14年前 (2011/05/28 15:40), 編輯推噓4(4011)
留言15則, 2人參與, 最新討論串1/1
小弟是一個C#新手,最近試著做了一個翻牌遊戲 因為我會的技巧不多,所以我都是用很基礎的指令寫完 以下是有問題的程式 private void btn1_Click(object sender, EventArgs e) { //紀錄按鈕被按下 btb1 = true; //載入圖片 for (int i = 0; i < 9; i++) { if (card[0] == i) { btn1.Image = i1.Images[i]; } } //當btn1,btn2被按下 if (btb1 == true && btb2 == true) { System.Threading.Thread.Sleep(1000); //兩張圖片相同 if (btn1.Image == btn2.Image) { btn1.Enabled = false; btn2.Enabled = false; success += 2; if (success == 16) { MessageBox.Show("闖關成功", "闖關成功"); } } //兩張圖片不同 else { btn1.Image = null; btn2.Image = null; btb1 = false; btb2 = false; } } 我是給予btn一個card[],裡面給予一個亂數的值,再用這個值去對應圖片 程式大致功能都有出來,可是卻有一個BUG 當兩個btn點擊,它會直接去比對btn的值,卻不會顯示圖片 小弟我真的已經想破頭了 懇請各位高手告訴我該如何修改它,謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 211.73.161.3

05/28 16:12, , 1F
btn1.Image == btn2.Image,感覺這個不對耶??
05/28 16:12, 1F

05/28 16:20, , 2F
我本來是寫card[0]==card[1],可是它會只比對btn的值
05/28 16:20, 2F

05/28 16:20, , 3F
所以我才改成btn1.Image == btn2.Image,結果還是一樣
05/28 16:20, 3F

05/28 16:22, , 4F
剛剛測試,btn1.image == btn2.image這樣寫是不對的
05/28 16:22, 4F

05/28 16:24, , 5F
為什麼不直接比對兩個亂數值是否相同就好?
05/28 16:24, 5F

05/28 16:27, , 6F
btn1.image == btn2.image我試過編譯是可以執行的
05/28 16:27, 6F

05/28 16:28, , 7F
喔,我說的不是語法不對,是邏輯不對,這裡的==不是
05/28 16:28, 7F

05/28 16:28, , 8F
我用的是Visual C#2008
05/28 16:28, 8F

05/28 16:28, , 9F
兩個圖片是否一樣,我想應該是判斷位址是否一樣吧
05/28 16:28, 9F

05/28 16:29, , 10F
所以你會永遠都進不去這個if內
05/28 16:29, 10F

05/28 16:32, , 11F
我本來是用比對亂數值的方法,可是問題卡在,它會直接比
05/28 16:32, 11F

05/28 16:32, , 12F
對亂數值,而不去管我的圖片是否一樣
05/28 16:32, 12F

05/28 16:33, , 13F
直接進入if else了
05/28 16:33, 13F

05/28 17:52, , 14F
問題以解決,十分感謝flydragon198大大的熱心!!!
05/28 17:52, 14F

05/28 17:55, , 15F
方法是在else,加上this.Refresh();接著sleep延遲覆蓋
05/28 17:55, 15F
文章代碼(AID): #1DuARrf8 (C_Sharp)
文章代碼(AID): #1DuARrf8 (C_Sharp)