小码哥喔 2021-08-01 12:38 采纳率: 0%
浏览 35
已结题

怎样用C语言,写3×3以上的井字游戏?

主要是他判断输赢的语句怎么写?搜了好多井子游戏,都只有3×3的,请求帮助!

  • 写回答

1条回答 默认 最新

  • CSDN专家-sinJack 2021-08-01 12:45
    关注

    参考地址:https://blog.csdn.net/weixin_38184741/article/details/106308892
    如有帮助,望点击我回答右上角【采纳】按钮。

    char* tictactoe(char** board, int boardSize){
            int i, j, value, flag;
            //行
            flag = 0;
            for(i=0; i<boardSize; i++)
            {
                value = 0; 
                for(j=0; j<boardSize; j++)
                {
                    if ('X' == board[i][j])
                        value++;
                    else if ('O' == board[i][j])
                        value--;
                    else if(' ' == board[i][j])
                        flag++;
                }
            if(value == boardSize)
                return "X";
            else if(0 == (value+boardSize))
                return "O";
            }
            if(!flag)
                return "Draw";
    
            //列
            flag = 0;
            for(i=0; i<boardSize; i++)
            {
                value = 0;      
                for(j=0; j<boardSize; j++)
                {  
                    if ('X' == *(board[j]+i))
                        value++;
                    else if ('O' == *(board[j]+i))
                        value--;
                    else if(' ' == board[j][i])
                        flag=1;
                }
                if(value == boardSize)
                    return "X";
                else if(0 == (value+boardSize))
                    return "O";
            }
            if(!flag)
                return "Draw";
    
            //正向对角线
            value = 0;
            flag = 0;
            for(i=0; i<boardSize; i++)
            {
                if ('X' == board[i][i])
                    value++;
                else if ('O' == board[i][i])
                    value--;
            }
            if(value == boardSize)
                return "X";
            else if(0 == (value+boardSize))
                return "O";
    
    
            //反向对角线
            value = 0;
            for(i=0; i<boardSize; i++)
            {
                if ('X' == board[i][boardSize-i-1])
                    value++;
                else if ('O' == board[i][boardSize-i-1])
                    value--;
            }
            if(value == boardSize)
                return "X";
            else if(0 == (value+boardSize))
                return "O";
            return "Pending";
    }
    
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 9月11日
  • 创建了问题 8月1日