C++ Tic-Tac-Toe树Minimax的节点生成
我正试图创建一个反向4x3井字游戏使用深度优先搜索和极大极小。我的代码现在有两个不同的错误,但其中之一就是为树创建适当的节点 我的每个节点都包含一个名为ChildVals的数组,该数组保存每个子节点的Minimax值,以及一个保存电路板的4x3数组 我有一个计算当前节点中有多少子节点的变量,称为childNum,我一直在尝试使用该变量为每个子节点生成不同的板。以下是我在子节点中创建板的代码: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
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
}
}