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
