我正在用c编写游戏,我想在每一步中都改变玩家。所以我创建我的功能来做到这一点。
struct Node{
char player[4];
int cubesRemaining;
struct Node *left;
struct Node *right;
};
char *switchPlayer(struct Node *n){
if (strcmp(n->player, "MAX") == 0){
strcpy(n->player, "MIN");
return (n->player);
}
else{
strcpy(n->player, "MAX");
return (n->player);
}
}
现在,我想构建游戏树,并使用递归创建另一个函数。我还使用了switchplayer函数,但收到错误消息,这是我的代码:
struct Node *buildGameTree(int ncubes, char *player){
struct Node *cube = calloc(1, sizeof(struct Node));
cube->cubesRemaining = ncubes;
strcpy(cube->player, player);
if (cube->cubesRemaining >= 1){
cube->left = buildGameTree(ncubes - 1, switchPlayer(cube->player));
}
if (cube->cubesRemaining >= M){
cube->right = buildGameTree(ncubes - K, switchPlayer(cube->player));
}
return (cube);
}
错误消息是:警告从不兼容的指针类型传递switchplayer的参数1
您定义switchplayer
为要接受的struct Node*
类型,但您正在传递的cube->player
是char *
;因此,您正在传递不兼容的指针类型。
您可能只想通过cube
而不是cube->player
像
cube->left = buildGameTree(ncubes -1, switchPlayer(cube));
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句