【发布时间】:2015-05-18 14:27:50
【问题描述】:
我想创建一个像 Nim 这样的游戏。
玩家可以拿走 1 个或 M(已定义)立方体,赢家是拿走最后一个立方体的玩家。我还将创建一个 minimax 函数,因此 MAX 玩家(总是先玩)正在做出最好的举动。我开始编写程序,但在创建树游戏时遇到了麻烦。这是我的代码:
#define M 30
#define K 4
char player[3] = "MAX";
int cubesCounter = M;
struct Node {
int value;
int numCubes;
struct Node *left;
struct Node *right;
};
char switchPlayer() {
if (strcmp(player, "MAX") == 0) {
strcpy(player, "MIN");
} else {
strcpy(player, "MAX");
}
}
struct Node buildGameTree() {
struct Node *cube;
cube->numCubes = M;
cube->left = NULL;
cube->right = NULL;
if (cube->numCubes >= 1) {
cube->numCubes = cube->numCubes - 1;
cube->left = buildGameTree();
}
if (cube->numCubes >= M) {
cube->numCubes = cube->numCubes - M;
cube->right = buildGameTree();
}
}
我在这几行遇到错误,我不知道出了什么问题:
cube->left = buildGameTree();
cube->right = buildGameTree();
谁能帮我实现这个功能?
【问题讨论】:
-
首先你的
buildGameTree必须返回一些东西,我猜:创建/分配的节点。你能发布错误吗? -
buildGameTree()中的cube指针后面没有内存,因此设置numCubes将导致未定义的行为。再加上你在同一个函数中有无限的recusion,因为没有终止条件。 -
IntelliSense:“struct Node”类型的值不能分配给“struct Node *”类型的实体
-
我还在函数末尾添加了
if(cube->numCubes == 0){return cube;}和return cube;,但我收到了我在之前评论中写的消息 -
“我在这些行出现错误...” 那会是什么错误?也许实际的错误消息可能有用...
标签: c tree artificial-intelligence minimax