您好,欢迎访问一九零五行业门户网

c语言代码如何实现贪吃蛇动画

c语言代码实现贪吃蛇动画的方法:首先确定基本思路,蛇每吃一个食物蛇身子就增加一格;然后用up,down,left,right控制蛇头的运动,而蛇身子跟着蛇头走;最后每后一格蛇身子下一步走到上一格蛇身子的位置。
基本思路: 
蛇每吃一个食物蛇身子就增加一格,用up, down, left, right控制蛇头的运动,而蛇身子跟着蛇头走,每后一格蛇身子下一步走到上一格蛇身子的位置,以此类推。
#include <stdio.h>#include <conio.h>#include <windows.h>#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 < hei; ++i){setconsolecursorposition(hout, pos);for(j = 0; j < wid; ++j){if(i == 0)//第一行{if(j == 0)printf("┏");else if(j == wid - 1)printf("┓");elseprintf("━");}else if(i == hei - 1)//最后一行{if(j == 0)printf("┗");else if(j == wid - 1)printf("┛");elseprintf("━");}else if(j == 0 || j == wid - 1)//第一列或最后一列printf("┃");elseprintf(" ");}++pos.y;}}//添加蛇身的函数void addbody(coord pos){psnake pnew = (psnake)calloc(1, sizeof(snake));pnew->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 < beg_y + hei - 2)++pos.y;elsereturn;break;case left:if(head->pos.x > beg_x + 2)pos.x -= 2;elsereturn;break;case right:if(head->pos.x < beg_x + (wid - 2) * 2)pos.x += 2;else return;break;}addbody(pos);//添加了一个新的蛇头ptmp = tail;//保存当前的蛇尾tail = tail->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语言代码如何实现贪吃蛇动画的详细内容。
其它类似信息

推荐信息