C 我不知道如何在游戏的链接列表(Snake)上写首字母
我不知道如何将尾部链接到头部以初始化列表。 我知道如何链接新节点以及链接后的所有内容,但我不知道如何正确初始化snake。它是用C写的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(
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。想一想,毫不犹豫地评论一下您对这种更简单方法的疑虑。这是否回答了您的问题?我不是指直接的问题和描述的问题,我是指理解指针构造的方法,正如我的答案中所描述的。