作者martinfu (史蒂芬槍)
看板C_Sharp
標題[問題] C#新手 翻牌遊戲問題
時間Sat May 28 15:40:34 2011
小弟是一個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
1F:推 flydragon198:btn1.Image == btn2.Image,感覺這個不對耶?? 05/28 16:12
2F:→ martinfu:我本來是寫card[0]==card[1],可是它會只比對btn的值 05/28 16:20
3F:→ martinfu:所以我才改成btn1.Image == btn2.Image,結果還是一樣 05/28 16:20
4F:推 flydragon198:剛剛測試,btn1.image == btn2.image這樣寫是不對的 05/28 16:22
5F:推 flydragon198:為什麼不直接比對兩個亂數值是否相同就好? 05/28 16:24
6F:→ martinfu:btn1.image == btn2.image我試過編譯是可以執行的 05/28 16:27
7F:推 flydragon198:喔,我說的不是語法不對,是邏輯不對,這裡的==不是 05/28 16:28
8F:→ martinfu:我用的是Visual C#2008 05/28 16:28
9F:→ flydragon198:兩個圖片是否一樣,我想應該是判斷位址是否一樣吧 05/28 16:28
10F:→ flydragon198:所以你會永遠都進不去這個if內 05/28 16:29
11F:→ martinfu:我本來是用比對亂數值的方法,可是問題卡在,它會直接比 05/28 16:32
12F:→ martinfu:對亂數值,而不去管我的圖片是否一樣 05/28 16:32
13F:→ martinfu:直接進入if else了 05/28 16:33
14F:→ martinfu:問題以解決,十分感謝flydragon198大大的熱心!!! 05/28 17:52
15F:→ martinfu:方法是在else,加上this.Refresh();接著sleep延遲覆蓋 05/28 17:55