c语言代码实现贪吃蛇动画的方法:首先确定基本思路,蛇每吃一个食物蛇身子就增加一格;然后用UP,DOWN,LEFT,RIGHT控制蛇头的运动,而蛇身子跟着蛇头走;最后每后一格蛇身子下一步走到上一格蛇身子的位置。
基本思路:
蛇每吃一个食物蛇身子就增加一格,用UP, DOWN, LEFT, RIGHT控制蛇头的运动,而蛇身子跟着蛇头走,每后一格蛇身子下一步走到上一格蛇身子的位置,以此类推。
#include #include #include #define BEG_X 2#define BEG_Y 1#define WID 20#define HEI 20HANDLE hout;typedef enum {UP, DOWN, LEFT, RIGHT} DIR;typedef struct Snake_body{COORD pos;//蛇身的位置struct Snake_body *next;//下一个蛇身struct Snake_body *prev;//前一个蛇身}SNAKE, *PSNAKE;PSNAKE head = NULL;//蛇头PSNAKE tail = NULL;//蛇尾//画游戏边框的函数void DrawBorder(){int i, j;COORD pos = {BEG_X, BEG_Y};for(i = 0; i pos = pos;if(!head){head = tail = pnew;}else{pnew->next = head;//新创建蛇身的next指向原先的蛇头head->prev = pnew;//原先的蛇头的prev指向新创建的蛇身head = pnew;//把新创建的蛇身作为新的蛇头}SetConsoleCursorPosition(hout, head->pos);printf("◎");}//蛇身移动的函数void MoveBody(DIR dir){PSNAKE ptmp;COORD pos = head->pos;switch(dir){case UP:if(head->pos.Y > BEG_Y + 1)--pos.Y;elsereturn;break;case DOWN:if(head->pos.Y pos.X > BEG_X + 2)pos.X -= 2;elsereturn;break;case RIGHT:if(head->pos.X prev;if(tail)tail->next = NULL;SetConsoleCursorPosition(hout, ptmp->pos);printf(" ");free(ptmp);}int main(){int ctrl;DIR dir = RIGHT;//初始蛇的方向是向右的COORD pos = {BEG_X + 2, BEG_Y + HEI / 2};system("color 0E");system("mode con cols=90 lines=30");hout = GetStdHandle(STD_OUTPUT_HANDLE);printf(" ------------贪吃蛇的移动------------");DrawBorder();//自定义几个蛇的身体AddBody(pos);pos.X += 2;AddBody(pos);pos.X += 2;AddBody(pos);pos.X += 2;AddBody(pos);pos.X += 2;AddBody(pos);pos.X += 2;AddBody(pos);pos.X += 2;AddBody(pos);//控制蛇的移动while(ctrl = getch()){switch(ctrl){case 'w':if(dir == DOWN)continue;dir = UP;break;case 's':if(dir == UP)continue;dir = DOWN;break;case 'a':if(dir == RIGHT)continue;dir = LEFT;break;case 'd':if(dir == LEFT)continue;dir = RIGHT;break;case 'q':return 0;}MoveBody(dir);}return 0;}
登录后复制
以上就是c语言代码如何实现贪吃蛇动画的详细内容,更多请关注【创想鸟】其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。
发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2492372.html