【发布时间】:2015-03-17 14:42:04
【问题描述】:
我正在尝试使用深度优先搜索和 Minimax 创建一个反向 4x3 Tic Tac Toe 游戏。我的代码现在有几个不同的问题,但其中一个只是为树创建正确的节点。
我的每个节点都包含一个名为 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|| || |
|X|| || |
|X|| || |
|X|| || |
当我真正想要这个时:
|X|| || |
| || || |
| || || |
| || || |
我知道这可能看起来很简单,我很抱歉看起来如此密集,但任何帮助将不胜感激!谢谢!
【问题讨论】: