很抱歉,我的问题可能比较初级。由于英语不是我的母语,所以请原谅我的语法错误。
我需要制作一个跳棋游戏。我已经定义了一些结构体,如下:
struct game {
int **board;
int xsize, ysize;
struct move *moves;
int cur_player;
};
struct coord {
int x, y;
};
struct move_seq {
struct move_seq *next;
struct coord c_old;
struct coord c_new;
int piece_value;
struct coord piece_taken;
int old_orig;
};
struct move {
struct move *next;
struct move_seq *seq;
};
我需要使用函数初始化一个名为“game”的结构体。
struct game *new_game(int xsize, int ysize)
那么,这是我的问题。我现在总是以10和10的值调用new_game函数中的xsize和ysize参数。然后,我初始化游戏板,稍后想要分配它。
int black = 1;
int white = 5;
int **board;
int i;
int j;
int k;
for(i=0;i<xsize;i++)
{
for(j=0;j<ysize;j++)
{
if(i<(xsize/2) && j<(ysize/2) && (i+j)%2!=0)
{
board[i][j] = black;
}
else if(i>(xsize/2) && j>(ysize/2) && (i+j)%2!=0)
{
board[i][j] = white;
}
else board[i][j] = 0;
}
}
struct game *new = malloc (sizeof(struct game *));
if (new == NULL) return NULL;
所以,我的问题在于此。无论我对结构体new做什么,都会出现“分割错误”。
我尝试用new->xsize = xsize和ysize做相同的赋值。我为board和move进行了malloc,就像我学到的那样,但我仍然不断得到分割错误的错误。
所以这是我的真正问题:如何正确地分配和初始化结构体?我需要为struct game的每个成员分配一次malloc吗?(我也尝试过,但没有成功...)
我不仅仅想要答案,我更希望真正理解我在这种情况下和一般情况下应该做些什么,以便将来少犯错误。
感谢您的帮助。
祝你有一个美好的一天。