作者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