c语言代码如何实现贪吃蛇动画
导读:收集整理的这篇文章主要介绍了c语言代码如何实现贪吃蛇动画,觉得挺不错的,现在分享给大家,也给大家做个参考。c语言代码实现贪吃蛇动画的方法:首先确定基本思路,蛇每吃一个食物蛇身子就增加一格;然后用UP,DOWN,LEFT,RIGHT控制蛇头的...
收集整理的这篇文章主要介绍了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语言代码如何实现贪吃蛇动画的详细内容,更多请关注其它相关文章!
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: c语言代码如何实现贪吃蛇动画
本文地址: https://pptw.com/jishu/594603.html