上一篇文章提到,怎么将蛇身给拉长,我们采用的是循环加判断的方式,如果坐标刚好等于我们扫描到的坐标,我们就将这个坐标处的值复制为【】从而实现拉长蛇身的目的。这个方法可以使用,但是土,太土了,而且并不方便于我们后续蛇吃了食物之后蛇身的拉长,所以这一章讲述了运用shruct的方式将蛇身拉长。
首先我们将之前的代码复制一份,重新编辑,将下面这几部分删除,我们采用函数的方式:
struct Snake snake1 = {2,2,NULL};
struct Snake snake2 = {2,3,NULL};
struct Snake snake3 = {2,4,NULL};
struct Snake snake4 = {2,5,NULL};
snake1.next = &snake2;
snake2.next = &snake3;
snake3.next = &snake4;
其次,我们定义一个 两个全局变量,蛇头和蛇尾,才用struct的尾插法,将我们的蛇身逐渐插入到指定位置去:
struct Snake *head; //蛇头
struct Snake *tail; //蛇尾
接着定义一个执行函数:
void initSnake(){
head = (struct Snake *)malloc(sizeof(struct Snake));
head->hang = 2;
head->lie = 2;
head->next == NULL;
tail = head;
addnode();
}
其中的 addnode(),也是需要定义的,这个函数主要体现了尾插法:
同时将之前的 p = &snake1;处改成 p = head;其余保持不变运行,如下图所示:
由于我们就是引用了一次addnode()函数,结果就是我们得到了两个【】【】蛇身, 如果我们需要五个蛇身,就引用四次就好,后面的问题就可以直接转换成函数的引用,就不会像之前那样需要几个蛇身就struct Snake去定义几个了,实在太土,好了今天就到这里,一起加油吧~