typedef enum
{
FALSE, TRUE
} BOOLEAN;
struct player
{
char name[MAX_NAME_LEN+1];
enum colour col;
};
我正在尝试将播放器设置为当前以启动它,以便我可以处理它:
enum str_result player_turn(struct player * current,
enum cell_contents board[][BOARDWIDTH])
{
}
我已将current定义为布尔值并尝试
BOOLEAN current;
struct player p1 = current;
但是当我编译时,我得到了错误
error: invalid initializer
那么将玩家设置为当前玩家的正确方法是什么?
答案 0 :(得分:1)
struct player
仅包含name
和col
。它不包含BOOLEAN
成员。
你可以添加这样一个成员并让该成员指出玩家是否是最新的。然而,这将是一个糟糕的设计(因为编码很繁琐,而且有更好的选择)。
相反,请使用另一个变量来指示哪个玩家是最新的。一种方法是直接指向玩家:
struct player *current_player = &p1;
// ...
player_turn(current_player, board);
// make next player be current
current_player = &p2;
或者,您可以存储int
或类似内容,指示哪些玩家是最新的,然后包含一些逻辑以根据该数字获得玩家。如果玩家存储在阵列中,这将更容易,例如
struct player players[4];
int current_player = 0;
// ...
player_turn(&players[current_player], board);
// make next player be current
++current_player;
if ( current_player > 3 )
current_player = 0;