关于贪吃蛇的几个问题。
int Eat(char snake[2]) //吃了苹果 {
if ((snake[0] == apple[0]) && (snake[1] == apple[1])) //apple[0] [1]苹果的x y 坐标
{
apple[0] = apple[1] = apple[2] = 0;
gotoxy(N+44,10); //这个函数做什么的,是为了生成下一个苹果吗
color(13);
printf("%d",score[0]*10);
color(11); //为什么使用两次color()函数;
return 1;
}
return 0;
}
void Draw(char **snake, int len) //蛇移动 //这里snake 用指向指针的指针
char** Move(char **snake, char dirx, int *len) //控制方向 //这里也是
void init(char plate[N+2][N+2], char ***snake_x, int *len) //初始化 //这里用了三个指针有什么作用?
memcpy(tail, snake[(*len)-1], 2);
for (i = (*len) - 1; i > 0; --i)
memcpy(snake[i], snake[i-1], 2);
if (full) //吃到了食物
{
snake = (char **)realloc(snake, sizeof(char *) * ((*len) + 1));//重新为蛇分配内存
snake[(*len)] = (char *)malloc(sizeof(char) * 2);
这三句话我是这么理解的
先从蛇身上取一个单位赋值给尾巴tail
然后蛇自身赋值给自身
吃了苹果后加一个单位,把尾巴的赋值给新单位
不过那个赋值给自身的代码我有点不理解,总觉得从i-1赋值给i 那么到i=0就停止了没有赋值了,不是就不完整了吗?