其他分享
首页 > 其他分享> > 五子棋的胜负判断函数

五子棋的胜负判断函数

作者:互联网

开局的图片中,作为获胜方的最后一子并没有显示出来。不过跟判断胜负的函数无关。可以在上面的程序进行设计是否显示出。这里用的是十五×十五的棋盘。

int isWin(char chess[15][15], int n, int m)//n代表最近一次落点的行坐标,m代表列坐标
{  int a=0,i,b=n,c=m,g=1;//g值的变化用来判断最近一次落点的坐标附件是否有四颗与之

相连的棋子,a作为返回值,如果a为1,则获胜,当然这里只提供一种思路,是否使用自己斟酌,a作为判断胜负条件需要在上面实现。
while(1){
    for(i=0;i<4;i++)//横向上的判断
    {    c--;
         if(c<0||c>14)
            break;
        if(chess[n][c]==chess[n][m])
        {
            g++;
        }
        if(chess[n][c]!=chess[n][m])
        {
            break;
        }
    }
    c=m;
    for(i=0;i<4;i++)//横向上的判断
    {    c++;
         if(c<0||c>14)
            break;
        if(chess[n][c]==chess[n][m])
        {
            g++;
        }
        if(chess[n][c]!=chess[n][m])
        break;
    }
    if(g>=5)
    {
        a=1;
        break;
    }
    if(g<5)
    {
        g=1;
        c=m;
        b=n;
    }
        for(i=0;i<4;i++)//纵向上的判断
    {    b--;
         if(b<0||b>14)
            break;
        if(chess[b][m]==chess[n][m])
        {
            g++;
        }

        if(chess[b][m]!=chess[n][m])
        {
            break;
        }

    }
    b=n;
    for(i=0;i<4;i++)//纵向上的判断
    {    b++;
         if(b<0||b>14)
            break;
        if(chess[b][m]==chess[n][m])
        {
            g++;
        }
        if(chess[b][m]!=chess[n][m])
        break;
    }
    if(g>=5)
    {
        a=1;
        break;
    }
    if(g<5)
    {
        g=1;
        c=m;
        b=n;
    }
     for(i=0;i<4;i++)//左上到右下的直线上的判断
    {    b--;
         c--;
         if(b<0||b>15||c<0||c>14)
            break;
        if(chess[b][c]==chess[n][m])
        {
            g++;
        }
        if(chess[b][c]!=chess[n][m])
        {
            break;
        }
    }
    b=n;
    c=m;
    for(i=0;i<4;i++)//左上到右下的直线判断
    {    b++;
         c++;
         if(b<0||b>14||c<0||c>14)
            break;
        if(chess[b][c]==chess[n][m])
        {
            g++;
        }
        if(chess[b][c]!=chess[n][m])
        break;
    }
    if(g>=5)
    {
        a=1;
        break;
    }
    if(g<5)
    {
        g=1;
        c=m;
        b=n;
    }
          for(i=0;i<4;i++)//右上到左下的直线上的判断
    {    b--;
         c++;
         if(b<0||b>15||c<0||c>14)
            break;
        if(chess[b][c]==chess[n][m])
        {
            g++;
        }
        if(chess[b][c]!=chess[n][m])
        {
            break;
        }
    }
    b=n;
    c=m;
    for(i=0;i<4;i++)//右上到左下的直线判断
    {    b++;
         c--;
         if(b<0||b>14||c>0||c<15)
            break;
        if(chess[b][c]==chess[n][m])
        {
            g++;
        }
        if(chess[b][c]!=chess[n][m])
        break;
    }
    if(g>=5)
    {
        a=1;
        break;
    }
    if(g<5)
    {
        g=1;
        c=m;
        b=n;
    }
    break;
    }
    return a;
}

标签:函数,++,胜负,五子棋,break,--,int,chess,c14
来源: https://blog.csdn.net/m0_64892851/article/details/122008994