VS2015贪吃蛇代码分析(10-4)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/hou09tian/article/details/86505665

点我下载代码

2.3 显示贪吃蛇

从图3中可以看出,贪吃蛇初始状态是用5个星号表示的。

2.3.1 贪吃蛇的节点

把组成蛇的星号看成蛇的节点,则每个节点可用如下结构表示。

typedef struct SNAKE {

int x;

int y;

struct SNAKE *next;

}snake;

其中,x和y表示该节点的位置,next表示该节点的下一节点。

2.3.2 ShowSnake()函数

通过自定义ShowSnake()函数显示贪吃蛇的初始状态。显示贪吃蛇时,从蛇的尾部开始显示,直到蛇的头部。因此,在自定义ShowSnake()函数中,首先定义贪吃蛇的尾部。

snake *tail;

tail = (snake*)malloc(sizeof(snake));

tail->x = 24;

tail->y = 5;

tail->next = NULL;

其中,坐标(24,5)指定了贪吃蛇初始化的尾部的坐标。通过malloc()函数为尾部节点分配了snake结构的,并对其成员变量进行赋值。

接下来定义贪吃蛇的身子和头部。

for (i = 1; i <= 4; i++)

{

head = (snake*)malloc(sizeof(snake));

head->next = tail;

head->x = 24 + 2 * i;

head->y = 5;

tail = head;

}

贪吃蛇的身子和头部有4颗星,通过for语句循环创建。在for的循环语句中,通过malloc()函数分配snake结构,并指定每颗星的横纵坐标,其中横坐标是在尾部星横坐标的基础上累加2个字符宽度,纵坐标即为尾部星的纵坐标。这样显示的贪吃蛇是水平直线的。head是snake结构的指针,表示贪吃蛇的头部。因为该变量在其它函数中也有使用,所以将其设置为全局变量。

最后,通过while()语句循环显示贪吃蛇。

while (tail != NULL)

{

MySetConsoleCursorPosition(tail->x, tail->y);

printf("*");

tail = tail->next;

}

tail实际上是贪吃蛇的头部,所以显示的时候是从蛇的头部开始显示的。MySetConsoleCursorPostion()是在“1.1 MySetCursorPosition()函数”中自定义的函数。蛇用字符“*”来表示。

猜你喜欢

转载自blog.csdn.net/hou09tian/article/details/86505665
今日推荐