C 中的智能计算机井字棋移动选择

Smart computer tic-tac-toe move selection in C

我敢肯定你们中的许多人已经厌倦了看到井字游戏的问题,但是对于为什么这部分没有按预期运行的任何见解,我将不胜感激。

其余代码运行良好,但就在此处,计算机并未着手,而只是重新显示棋盘并返回到用户的着法。

我确认用户和计算机标记已转移到该功能,但选择过程不起作用。它默认为for循环,从那里继续执行其他功能,但它仍然没有分配计算机标记。

我在其他地方已经有了代码,可以确保在发送到下一步之前棋盘未满。

谢谢

void cmove(char umark, char cmark)
{
    int i=0;
    if((board[4] == NULL))
    {
        board[4] == cmark;
        DisplayBoard();
        cwin(umark , cmark);
    }
    if((board[0] != NULL) && (board[1] != NULL) && (board[2] != NULL) && (board[3] != NULL) && (board[4] == umark) && (board[5] != NULL) &&
       (board[6] != NULL) && (board[7] != NULL) && (board[8] != NULL))
       {
           board[0]= cmark;
           DisplayBoard();
           cwin(umark ,cmark);
       }
    for(i=0; i<9; i++)
    {
        if(board[i] == NULL)
        {
            board[i] == cmark;
            DisplayBoard();
            cwin(umark, cmark);
            i=9;
        }
    }
}

这是比较,不是赋值:

 board[i] == cmark;

您在第一个条件块中遇到了类似的问题board[4] == cmark;

打开您的编译器可以发出的所有警告以捕获此类错误。

board[4] == cmark;

这是对比,没有效果。您的意图是分配:

board[4] = cmark;