Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 我不知道如何在游戏的链接列表(Snake)上写首字母_C - Fatal编程技术网

C 我不知道如何在游戏的链接列表(Snake)上写首字母

C 我不知道如何在游戏的链接列表(Snake)上写首字母,c,C,我不知道如何将尾部链接到头部以初始化列表。 我知道如何链接新节点以及链接后的所有内容,但我不知道如何正确初始化snake。它是用C写的 typedef struct node { int x; int y; struct node* next; struct node* prev; } NODE; typedef struct SNAKE { NODE* head; NODE* tail; } SNAKE; void initialSnaKE(

我不知道如何将尾部链接到头部以初始化列表。 我知道如何链接新节点以及链接后的所有内容,但我不知道如何正确初始化snake。它是用C写的

typedef struct node {
    int x;
    int y;
    struct node* next;
    struct node* prev;
} NODE;

typedef struct SNAKE {
    NODE* head;
    NODE* tail;
} SNAKE;

void initialSnaKE(SNAKE* snake) {

    snake->tail->next=snake->head;

    snake->head->next = NULL;

    snake->tail->prev = snake->tail->next;

    snake->tail->x = (ROWS / 2);

    snake->tail->y = (COLS / 2);

    snake->head->x = (ROWS / 2);

    snake->head->y = (COLS / 2);

}

你的蛇不存在,因为在蛇体内建立连接之前,你甚至没有为它分配内存

使用以下代码重新编写函数以初始化snake,它可能会对您有所帮助:

snake->head = (NODE*)malloc(sizeof(NODE));
snake->head->prev = NULL;
snake->head->next = NULL;
// Your code to assign the coordinates of head
// But no need to initialize the tail here
// Because the snake grows its tail only when it eats food
snake->tail = NULL;
这足够用您提供的细节初始化snake了。蛇内的连接将在另一个供养蛇的函数内进行。为了完成这项任务,你可以学习


老实说,我不认为这个简单的游戏在代码上必须如此复杂。一个简单的数组就足以实现snake。想一想,毫不犹豫地评论一下您对这种更简单方法的疑虑。

这是否回答了您的问题?我不是指直接的问题和描述的问题,我是指理解指针构造的方法,正如我的答案中所描述的。