ix,jy为静态变量。
//判断横行
            for (int a = ix - 4; a <= ix + 4; a++)
            {
                if (chess[a, jy] == 2)
                {
                    lishu1++;
                    if (lishu1 == 5)
                        MessageBox.Show("恭喜您,你胜利了!", "信息", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
                else
                {
                    lishu1 = 0;
                }
            }
            //判断竖行
            for (int a = jy - 4; a <= jy + 4; a++)
            {
                if (chess[ix,a] == 2)
                {
                    lishu2++;
                    if (lishu2 == 5)
                        MessageBox.Show("恭喜您,你胜利了!", "信息", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
                else
                {
                    lishu2 = 0;
                }
            }
            //判断左斜线
            for (int a = ix - 4,b=jy-4; a<=ix+4&b<=jy+4;a++,b++)
            {
                if (chess[a, b] == 2)
                {
                    lishu3++;
                    if (lishu3 == 5)
                        MessageBox.Show("恭喜您,你胜利了!", "信息", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
                else
                {
                    lishu3 = 0;
                }
            }
现在横行和竖行已经实现,但是斜的不行,是不是我的for语句有问题,请高手指点下啊!

解决方案 »

  1.   

    //3点 1.为什么直接用  chess[a, b] == 2 ,因为有黑白两种可能性,因此这样不合理,2.MessageBox 应该要加上break,为什么要无用的剩余循环,3,lishu3的初值是否是0
     for (int a = ix - 4,b=jy-4; a<=ix+4&b<=jy+4;a++,b++)
                {
                    if (chess[a, b] == 2)
                    {
                        lishu3++;
                        if (lishu3 == 5)
                        {    MessageBox.Show("恭喜您,你胜利了!", "信息", MessageBoxButtons.OK, MessageBoxIcon.Information); 
                         break;
                        }
                    }
                    else
                    {
                        lishu3 = 0;
                    }
                }