Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/162.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/147.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Tic-Tac-Toe树Minimax的节点生成_C++_Arrays_For Loop_Nodes - Fatal编程技术网

C++ Tic-Tac-Toe树Minimax的节点生成

C++ Tic-Tac-Toe树Minimax的节点生成,c++,arrays,for-loop,nodes,C++,Arrays,For Loop,Nodes,我正试图创建一个反向4x3井字游戏使用深度优先搜索和极大极小。我的代码现在有两个不同的错误,但其中之一就是为树创建适当的节点 我的每个节点都包含一个名为ChildVals的数组,该数组保存每个子节点的Minimax值,以及一个保存电路板的4x3数组 我有一个计算当前节点中有多少子节点的变量,称为childNum,我一直在尝试使用该变量为每个子节点生成不同的板。以下是我在子节点中创建板的代码: int openSpace = 0; //counts how many open sp

我正试图创建一个反向4x3井字游戏使用深度优先搜索和极大极小。我的代码现在有两个不同的错误,但其中之一就是为树创建适当的节点

我的每个节点都包含一个名为ChildVals的数组,该数组保存每个子节点的Minimax值,以及一个保存电路板的4x3数组

我有一个计算当前节点中有多少子节点的变量,称为childNum,我一直在尝试使用该变量为每个子节点生成不同的板。以下是我在子节点中创建板的代码:

        int openSpace = 0; //counts how many open spaces encountered
        for(int i=0; i < 4; i++){
            for(int j=0; j< 3; j++){
                if(child->board[i][j] == 'X' || child->board[i][j] == 'O'){
                //go to next space
                }
                else{

                    if(openSpace == childNum){
                        if(node->xmove){
                            child->board[i][j] = 'X';
                        }
                        else{
                            child->board[i][j] = 'O';
                        }
                        break;
                    }
                    else{
                        openSpace++;
                    }
                }
                if(openSpace == childNum){
                    break;
                }
            }
        }
当我真的想要这个的时候:

|X|| || |
| || || |
| || || |
| || || |

我知道这可能看起来很简单,我很抱歉看起来这么复杂,但任何帮助都将不胜感激!谢谢

中断
只会中断最近的循环。您可能需要额外的
中断
来中断这两个循环(如果我正确理解您的目标)

或许可以试试这个:

for (int i=0; i < 4; i++) {
    for (int j=0; j< 3; j++) {
        if (child->board[i][j] == 'X' || child->board[i][j] == 'O') {
            //go to next space
        }
        else {
            if (openSpace == childNum) {
                if (node->xmove) {
                     child->board[i][j] = 'X';
                }
                else {
                     child->board[i][j] = 'O';
                }
                break;
            }
            else {
                openSpace++;
            }
        }
        if (openSpace == childNum) {
            break;  // only breaks out of inner loop
        }
    }
    if (openSpace == childNum) {
        break;  // breaks out of outer loop
    }
}
for(int i=0;i<4;i++){
对于(int j=0;j<3;j++){
if(child->board[i][j]='X'| | child->board[i][j]='O'){
//去下一个空间
}
否则{
if(openSpace==childNum){
如果(节点->xmove){
子->板[i][j]=“X”;
}
否则{
child->board[i][j]=“O”;
}
打破
}
否则{
openSpace++;
}
}
if(openSpace==childNum){
break;//仅从内部循环中断
}
}
if(openSpace==childNum){
break;//断开外部循环
}
}
for (int i=0; i < 4; i++) {
    for (int j=0; j< 3; j++) {
        if (child->board[i][j] == 'X' || child->board[i][j] == 'O') {
            //go to next space
        }
        else {
            if (openSpace == childNum) {
                if (node->xmove) {
                     child->board[i][j] = 'X';
                }
                else {
                     child->board[i][j] = 'O';
                }
                break;
            }
            else {
                openSpace++;
            }
        }
        if (openSpace == childNum) {
            break;  // only breaks out of inner loop
        }
    }
    if (openSpace == childNum) {
        break;  // breaks out of outer loop
    }
}