【微信网页跳转源码】【小程序源码怎么抓】【百强网源码】贪吃蛇c语言源码_贪吃蛇c语言源代码

时间:2024-12-26 12:57:38 来源:JJY源码 分类:时尚

1.贪吃蛇c语言源代码
2.如何用C语言写贪吃蛇
3.求用c语言编写的贪吃贪吃贪吃蛇程序
4.用c语言写贪吃蛇
5.c语言贪吃蛇代码

贪吃蛇c语言源码_贪吃蛇c语言源代码

贪吃蛇c语言源代码

       下面是一个简单的贪吃蛇游戏的C语言实现框架,不包含完整的蛇c蛇图形界面,但展示了游戏逻辑的语言源码语言源代基本结构。此示例使用控制台字符来模拟蛇的贪吃贪吃移动和食物的生成。请注意,蛇c蛇这只是语言源码语言源代微信网页跳转源码一个概念性的实现,实际应用中可能需要借助图形库(如SDL、贪吃贪吃OpenGL或Windows API)来创建图形界面。蛇c蛇

       ```c

       #include

       #include

       #include // 注意:_kbhit() 和 _getch() 是语言源码语言源代特定于某些编译环境的

       // 假设的蛇身和地图大小

       #define SIZE

       int x, y, fruitX, fruitY, score;

       int tailX[], tailY[];

       int nTail;

       enum eDirection { STOP = 0, LEFT, RIGHT, UP, DOWN };

       enum eDirection dir;

       void Setup() {

        // 初始化代码

        dir = STOP;

        x = SIZE / 2;

        y = SIZE / 2;

        fruitX = rand() % SIZE;

        fruitY = rand() % SIZE;

        score = 0;

       }

       void Draw() {

        // 绘制游戏界面,此处省略

        // 使用循环打印蛇身和食物位置

       }

       void Input() {

        // 处理用户输入

        if (_kbhit()) {

        switch (_getch()) {

        case 'a': dir = LEFT; break;

        case 'd': dir = RIGHT; break;

        case 'w': dir = UP; break;

        case 's': dir = DOWN; break;

        }

        }

       }

       void Logic() {

        // 移动逻辑,贪吃贪吃碰撞检测等

        // 此处省略

       }

       int main() {

        Setup();

        while (1) {

        Draw();

        Input();

        Logic();

        // 延时

        Sleep();

        }

        return 0;

       }

       ```

       注意:`_kbhit()` 和 `_getch()` 是蛇c蛇特定于某些编译环境(如Microsoft Visual Studio)的函数,用于检测键盘输入。语言源码语言源代在其他环境中,贪吃贪吃可能需要使用不同的蛇c蛇方法来实现输入处理。此外,语言源码语言源代由于篇幅限制,此代码省略了具体的绘制和逻辑实现细节。

如何用C语言写贪吃蛇

       #include<conio.h> #include<graphics.h> #include<time.h> #include<string.h> #include<malloc.h> #include<stdio.h> int grade=5,point=0,life=3; void set(),menu(),move_head(),move_body(),move(),init_insect(),left(),upon(),right(),down(),init_graph(),food_f(),ahead(),crate(); struct bug { int x; int y; struct bug *last; struct bug *next; }; struct fd { int x; int y; int judge; }food={ 0,0,0}; struct bug *head_f=NULL,*head_l,*p1=NULL,*p2=NULL; void main() { char ch; initgraph(,); set(); init_insect(); while(1) { food_f(); Sleep(grade*); setcolor(BLACK); circle(head_l->x,head_l->y,2); setcolor(WHITE); move_body(); if(kbhit()) { ch=getch(); if(ch==) { ahead(); set(); } else if(ch==-) { switch(getch()) { case :upon();break; case :down();break; case :left();break; case :right();break; } } else ahead(); } else { ahead(); } if(head_f->x==food.x&&head_f->y==food.y) { Sleep(); crate(); food.judge=0; point=point+(6-grade)*; if(food.x<||food.y<||food.x>||food.y>) life++; menu(); } if(head_f->x<5||head_f->x>||head_f->y<5||head_f->y>) { Sleep(); life--; food.judge=0; init_graph(); init_insect(); menu(); } for(p1=head_f->next;p1!=NULL;p1=p1->next) { if(head_f->x==p1->x&&head_f->y==p1->y) { Sleep(); life--; food.judge=0; init_graph(); init_insect(); menu(); break; } } if(life==0) { outtextxy(,,"游戏结束!"); getch(); return; } move(); }; } void init_graph() { clearviewport(); setlinestyle(PS_SOLID,1,5); rectangle(2,2,,); setlinestyle(PS_SOLID,1,1); } void set() { init_graph(); outtextxy(,,"1、开始 / 返回"); outtextxy(,,"2、退出"); outtextxy(,,"3、难度"); outtextxy(,,"4、重新开始"); switch(getch()) { case '1': menu();setcolor(GREEN);circle(food.x,food.y,2);setcolor(WHITE);return; case '2': exit(0);break; case '3': outtextxy(,,":1 2 3 4 5");grade=getch()-;set();break; case '4': food.judge=0,grade=5;point=0;life=3;init_insect();menu();break; default: outtextxy(,,"输入错误!"); set();break; } } void menu() { char str[],str1[]={ "分数:"},str2[]={ "难度:"},str3[]={ "生命值:"}; init_graph(); sprintf(str,"%d",point); strcat(str1,str); outtextxy(,,str1); sprintf(str,"%d",grade); strcat(str2,str); outtextxy(,,str2); sprintf(str,"%d",life); strcat(str3,str); outtextxy(,,str3); outtextxy(,,"设置:ESC"); } void init_insect() { head_f=(struct bug *)malloc(sizeof(struct bug)); head_f->last=NULL; head_f->x=; head_f->y=; p2=head_f->next=p1=(struct bug *)malloc(sizeof(struct bug)); p1->last=head_f; p1->x=; p1->y=; p1=p1->next=(struct bug *)malloc(sizeof(struct bug)); p1->next=NULL; p1->x=; p1->y=; p1->last=p2; head_l=p1; } void move() { for(p1=head_f;p1!=NULL;p1=p1->next) { circle(p1->x,p1->y,2); } } void move_head() { } void move_body() { for(p1=head_l,p2=p1->last;p2!=NULL;p1=p2,p2=p2->last) { p1->x=p2->x; p1->y=p2->y; } } void ahead() { p1=head_f; p2=p1->next; p2=p2->next; if(p1->x==p2->x) { if(p1->y>p2->y) head_f->y+=5; else head_f->y-=5; } else { if(p1->x>p2->x) { head_f->x+=5; } else head_f->x-=5; } } void upon() { p1=head_f->next; p1=p1->next; head_f->y-=5; if(p1->x==head_f->x&&p1->y==head_f->y) { head_f->y+=5; ahead(); } } void down() { p1=head_f->next; p1=p1->next; head_f->y+=5; if(p1->x==head_f->x&&p1->y==head_f->y) { head_f->y-=5; ahead(); } } void left() { p1=head_f->next; p1=p1->next; head_f->x-=5; if(p1->x==head_f->x&&p1->y==head_f->y) { head_f->x+=5; ahead(); } } void right() { p1=head_f->next; p1=p1->next; head_f->x+=5; if(p1->x==head_f->x&&p1->y==head_f->y) { head_f->x-=5; ahead(); } } void food_f() { if(!food.judge) { food.x=(rand()%+1)*5; food.y=(rand()%+1)*5; food.judge=1; if(food.x<||food.y<||food.x>||food.y>) { setcolor(RED); circle(f

求用c语言编写的贪吃蛇程序

       C语言实现的简单贪吃蛇程序

       以下是一个基本的贪吃蛇程序的C语言代码示例。请注意,小程序源码怎么抓这是一个非常简单的实现,主要用于展示贪吃蛇游戏的核心逻辑,界面和更多功能可能需要进一步开发和完善。

       c

       #include

       #include

       #include // 用于延时和获取键盘状态

       #include // 用于设置颜色和清屏

       // 定义蛇的部分结构

       typedef struct SnakePart {

       int x; // 蛇的横坐标

       int y; // 蛇的纵坐标

       } SnakePart;

       // 定义蛇的结构体,包含头和身体部分列表

       typedef struct Snake {

       SnakePart head; // 蛇头位置

       SnakePart body[]; // 身体部分列表

       int direction; // 蛇移动的方向

       } Snake;

       // 游戏初始化函数

       void initGame {

       Snake snake = { { , }, { 9, }, { 8, }, 1}; // 初始化蛇的位置和初始方向

       // 更多初始化代码... 如设置窗口大小、颜色等。

       }

       // 游戏主循环函数

       void gameLoop {

       Snake snake; // 使用全局变量或传入参数方式获取蛇的状态

       int key; // 用于捕获按键的变量

       while { // 主循环,持续游戏直到退出条件满足

       // 更新游戏状态...此处需要根据蛇的状态来更新位置等逻辑。

       system; // 清屏命令

       // 重绘游戏界面...这里可以根据需要绘制蛇体和食物等。百强网源码

       printf; // 输出当前游戏状态作为示例,实际应使用绘图函数来显示游戏画面。

       Sleep; // 延时函数,控制游戏速度

       key = _getch; // 获取用户按键操作用以控制蛇的移动方向等。

       // 根据按键更新蛇的状态...此处需要根据key的值来改变蛇的direction属性。

       if break; // 如果按下'q',则退出游戏循环。

       }

       }

       int main {

       initGame; // 游戏初始化

       gameLoop; // 开始游戏循环

       return 0; // 程序结束

       }

        这是一个非常基础的贪吃蛇游戏框架,具体的超级搜淘客源码实现细节需要根据具体需求进行扩展和完善。例如,需要实现蛇的移动逻辑、食物的生成和碰撞检测等。此外,还需要利用图形库或操作系统提供的API来实现游戏界面和用户交互功能。对于真正的游戏开发来说,代码会更复杂并且涉及更多的内容。

用c语言写贪吃蛇

       #include

       #include

       #include

       #include /*引用的库函数*/

       #define LEFT 0x4b

       #define RIGHT 0x4d

       #define DOWN 0x

       #define UP 0x

       #define ESC 0xb/*宏定义键名*/

       #define N

       int i,key;

       int level;/*游戏等级*/

       int score=0;/*得分*/

       int gamespeed;/*游戏速度*/

       struct Food

       {

       int x;/*食物的横坐标*/

       int y;/*食物的纵坐标*/

       int yes;/*判断是否要出现食物的变量*/

       }food;/*食物的结构体*/

       struct Snake

       {

       int x[N];

       int y[N];

       int node;/*蛇的节数*/

       int direction;/*蛇移动方向*/

       int life;/* 蛇的生命,0活着,1死亡*/

       }snake;/*蛇的结构体*/

       void Choicelevle(void);/*选择游戏等级*/

       void Init(void);/*图形驱动*/

       void Close(void);/*图形结束*/

       void DRAW(void);/*游戏区域*/

       void GameOver(void);/*结束游戏*/

       void GamePlay(void);/*玩游戏具体过程*/

       void PrScore(void);/*输出成绩*/

       /*主函数*/

       void main(void)

       {

       Init();/*图形驱动*/

       Choicelevle();/*选择游戏等级*/

       DRAW();/*游戏区域*/

       GamePlay();/*玩游戏具体过程*/

       Close();/*图形结束*/

       }

       /*图形驱动*/

       void Init(void)

       {

       int gd=DETECT,gm;

       initgraph(&gd,&gm,"\\turboc2"); /*初始化图形系统*/

       cleardevice(); /*清除图形界面*/

       }

       /*选择游戏等级*/

       void Choicelevle(void)

       { char name[];setcolor(YELLOW);settextstyle(0,0,6);outtextxy(,,"Snake");setcolor(GREEN);settextstyle(0,0,1);outtextxy(,,"please put in your English name:");outtextxy(,,"Choice levle from 1-9.");outtextxy(,,"name:yangzilong");/*制作人姓名*/outtextxy(,,"number:");/*制作人学号*/outtextxy(,,"class:computer science ");/*制作人班级*/getch();printf("please putin your name:");gets(name);printf("please choice levle:");scanf("%d",&level);gamespeed=-*level-*level*level;if(level>9||level<1){ cleardevice(); /*清除图形界面*/setcolor(YELLOW); /*设置字体颜色*/settextstyle(0,0,2); /*设置字体类型*/outtextxy(,,"level input error"); /*显示文本*/getch();level=1;}

       }

       void DRAW(void)

       { cleardevice(); /*清屏*/setcolor(2);setlinestyle(SOLID_LINE,0,THICK_WIDTH);/*设置线型*/rectangle(,,,);}

       /*玩游戏具体过程*/

       void GamePlay(void)

       { setcolor(5);setlinestyle(SOLID_LINE,0,THICK_WIDTH);/*设置线型*/randomize();/*随机数发生器*/food.yes=1;/*1表示需要出现新食物,0表示已经存在食物*/snake.life=0;/*活着*/snake.direction=1;/*方向往右*/snake.x[0]=;snake.y[0]=;/*蛇头*/snake.x[1]=;snake.y[1]=; /*蛇的第二节位置*/snake.node=3;/*节数*/PrScore();/*输出得分*/while(1)/*可以重复玩游戏,压ESC键结束*/{ while(!kbhit())/*在没有按键的情况下,蛇自己移动身体*/{ if(food.yes==1)/*需要出现新食物*/{ food.x=rand()%+;food.y=rand()%+;while(food.x%!=0)/*食物随机出现后必须让食物能够在整格内,这样才可以让蛇吃到*/food.x++;while(food.y%!=0)food.y++;food.yes=0;/*画面上有食物了*/}

       if(food.yes==0)/*画面上有食物了就要显示*/

       {

       setcolor(GREEN);

       rectangle(food.x,food.y,food.x+,food.y-);

       }

       for(i=snake.node-1;i>0;i--)/*蛇的每个环节往前移动*/

       {

       snake.x[i]=snake.x[i-1];

       snake.y[i]=snake.y[i-1];

       }

       /*1,2,3,4表示右,å·¦,上,下四个方向,通过这个控制来移动蛇头*/

       switch(snake.direction)

       {

       case 1: snake.x[0]+=;break;

       case 2: snake.x[0]-=;break;

       case 3: snake.y[0]-=;break;

       case 4: snake.y[0]+=;break;

       }

       for(i=3;i<snake.node;i++)/*从蛇的第四节开始判断是否撞到自己了,因为蛇头为两节,第三节不可能拐过来*/

       {

       if(snake.x[i]==snake.x[0]&&snake.y[i]==snake.y[0])

       {

       GameOver();/*显示失败*/

       snake.life=1; /*蛇死*/

       break;

       }

       }

       /*如果蛇头碰到墙壁,蛇头从对面墙出来*/

       if(snake.x[0]<)

       { snake.x[0]=;/*如果蛇头越过左边界,则从右边界进入*/snake.y[0]=snake.y[0];/*纵坐标不变*/for(i=snake.node-1;i>0;i--){ snake.x[i]=snake.x[i-1];snake.y[i]=snake.y[i-1]; /*蛇的其他节数向前推进*/}

       {

       setfillstyle(SOLID_FILL,0); /*设置填充模式和颜色,0表示黑色*/

       bar(,,,);/*bar是表示填充的范围的函数*/

       }

       }

       else

       if(snake.x[0]>)

       { snake.x[0]=;/*如果蛇头越过右边界,则蛇头从左边界进入*/snake.y[0]=snake.y[0];/*纵坐标不变*/for(i=snake.node-1;i>0;i--){ snake.x[i]=snake.x[i-1];snake.y[i]=snake.y[i-1]; /*蛇的其他节数向前推进*/}

       {

       setfillstyle(SOLID_FILL,0); /*设置填充模式和颜色,0表示黑色*/

       bar(,,,);/*bar是表示填充的范围的函数*/

       }

       }

       else

       if(snake.y[0]<)

       { snake.y[0]=;/*如果蛇头越过上边界,则从下边界进入*/snake.x[0]=snake.x[0];/*横坐标不变*/for(i=snake.node-1;i>0;i--){ snake.x[i]=snake.x[i-1];snake.y[i]=snake.y[i-1]; /*蛇的其他节数向前推进*/}

       {

       setfillstyle(SOLID_FILL,0); /*设置填充模式和颜色,0表示黑色*/

       bar(,,,);/*bar是表示填充的范围的函数*/

       }

       }

       else

       if(snake.y[0]>)

       { snake.y[0]=;/*如果蛇头越过下边界,则从上边界进入*/snake.x[0]=snake.x[0];/*横坐标不变*/for(i=snake.node-1;i>0;i--){ snake.x[i]=snake.x[i-1];snake.y[i]=snake.y[i-1]; /*蛇的其他节数向前推进*/}

       {

       setfillstyle(SOLID_FILL,0); /*设置填充模式和颜色,0表示黑色*/

       bar(,,,);/*bar是表示填充的范围的函数*/

       }

       }

       if(snake.life==1)/*如果蛇死就跳出内循环,重新开始*/

       break;

       if(snake.x[0]==food.x&&snake.y[0]==food.y)/*吃到食物以后*/

       {

       setcolor(0);/*把画面上的食物东西去掉*/

       rectangle(food.x,food.y,food.x+,food.y-); /*用当前线型和颜色画一矩形*/

       snake.x[snake.node]=-;snake.y[snake.node]=-;

       /*新的一节先放在看不见的位置,下次循环就取前一节的位置*/

       snake.node++;/*蛇的身体长一节*/

       food.yes=1;/*画面上需要出现新的食物*/

       score+=; /*每吃掉一食物,得分累加分*/

       if(score%==0)

       { level++;gamespeed=-*level-*level*level;/*每吃掉食物提升一级,速度加快*/PrScore();/*输出新得分*/setcolor(YELLOW); /*设置字体颜色*/settextstyle(0,0,4); /*设置字体类型*/outtextxy(,,"LEVEL UP"); /*显示文本*/if(level==){ level=1,gamespeed=-*level-*level*level;}

       delay();

       delay();

       delay();

       delay();

       delay();

       delay();

       delay();

       bar(,,,);/*bar是表示填充的范围的函数*/

       }

       PrScore();/*输出新得分*/

       }

       setcolor(4);/*画出蛇*/

       for(i=0;i<snake.node;i++)

       rectangle(snake.x[i],snake.y[i],snake.x[i]+,

       snake.y[i]-);

       delay(gamespeed); /*控制游戏速度*/

       setcolor(0);

       rectangle(snake.x[snake.node-1],snake.y[snake.node-1],

       snake.x[snake.node-1]+,snake.y[snake.node-1]-);

       } /*endwhile(!kbhit)*/ /*用黑色去除蛇的的最后一节*/

       if(snake.life==1)/*如果蛇死就跳出循环*/

       break;

       key=bioskey(0);/*接收按键*/

       if(key==ESC)/*按ESC键退出*/

       break;

       else

       if(key==UP&&snake.direction!=4)

       /*判断是否往相反的方向移动*/

       snake.direction=3;

       else

       if(key==RIGHT&&snake.direction!=2)

       snake.direction=1;

       else

       if(key==LEFT&&snake.direction!=1)

       snake.direction=2;

       else

       if(key==DOWN&&snake.direction!=3)

       snake.direction=4;

       }/*endwhile(1)*/

       }

       /*游戏结束*/

       void GameOver(void)

       {

       cleardevice(); /*清屏*/

       PrScore();

       setcolor(RED); /*设置字体颜色*/

       settextstyle(0,0,4); /*设置字体类型*/

       outtextxy(,,"GAME OVER"); /*显示文本*/

       getch();

       }

       /*输出成绩及游戏等级*/

       void PrScore(void)

       {

       char str1[];/*设置字符型数组*/

       setfillstyle(SOLID_FILL,0);

       bar(,,,); /*填充矩形框*/

       setcolor(6); /*设置文本颜色*/

       settextstyle(0,0,2); /*设置数组显示位置*/

       sprintf(str1,"score %d level %d",score,level);/*显示数组内容*/

       outtextxy(,,str1);

       setcolor(YELLOW); /*设置字体颜色*/

       settextstyle(0,0,2); /*设置字体类型*/

       outtextxy(,,"EXIT=ESC ");/*显示文本*/

       }

       void Close(void)

       {

       closegraph();

       }

c语言贪吃蛇代码

       基本思路: 

       蛇每吃一个食物蛇身子就增加一格,用UP,cx_freeze源码分析 DOWN, LEFT, RIGHT控制蛇头的运动,而蛇身子跟着蛇头走,每后一格蛇身子下一步走到上一格蛇身子的位置,以此类推。

       #include <stdio.h>

       #include <conio.h>

       #include <windows.h>

       #define BEG_X 2

       #define BEG_Y 1

       #define WID

       #define HEI

       HANDLE 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("┓");

       else

       printf("━");

       }

       else if(i == HEI - 1)//最后一行

       {

       if(j == 0)

       printf("┗");

       else if(j == WID - 1)

       printf("┛");

       else

       printf("━");

       }

       else if(j == 0 || j == WID - 1)//第一列或最后一列

       printf("┃");

       else

       printf("  ");

       }

       ++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;

       else

       return;

       break;

       case DOWN:

       if(head->pos.Y < BEG_Y + HEI - 2)

       ++pos.Y;

       else

       return;

       break;

       case LEFT:

       if(head->pos.X > BEG_X + 2)

       pos.X -= 2;

       else

       return;

       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= lines=");

       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;

       }

扩展资料:

       实现逻辑

       1,可以设置光标,就能实现制定位置打印制定符号。

       2,涉及一个结构体,包含两个元素坐标元素和一个结构体指针。

       3,结构体串联形成链表,遍历获取成员坐标,打印符号得到蛇身。

       4,不断的加头,去尾,重新遍历坐标,再打印形成蛇的移动。

       5,食物产生的位置判定,不能越界,也不能与蛇身体重合。

       6,蛇的转向判定,一条规则,不允许倒退。

       7,转向的实现,跟行进方向决定新的关节坐标(当前头的上下左右)

       8,死亡检测,是否头节点坐标是否与墙壁重合,是否与身体其他关节重合。

       9,加速减速,设置刷新休眠时间实现。

       百度百科-C语言