首页后端开发ASP.NETc语言代码如何实现贪吃蛇动画

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

时间2024-01-31 23:11:02发布访客分类ASP.NET浏览786
导读:收集整理的这篇文章主要介绍了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++11新特性有哪些下一篇:C和C++有什么区别猜你在找的ASP.NET相关文章 C# 一些面试试题的实例教程2022-05-16.NET 6开发TodoList应用之请求日志组件HttpLogging介绍2022-04-16.NET 6中间件Http Logging使用介绍2022-04-16gojs一些实用的高级用法2022-04-16.NET6开发TodoList应用之实现查询排序2022-04-16.NET6开发TodoList应用之实现数据塑形2022-04-16.NET微服务架构CI/CD自动打包镜像2022-04-16Asp.Net Core 使用Monaco Editor 实现代码编辑器功能2022-04-16.NET微服务架构CI/CD自动构建Jenkins+Gitee2022-04-16.Net Core微服务网关Ocelot集成Consul2022-04-16 其他相关热搜词更多phpjavapython程序员loadpost-format-gallery

若转载请注明出处: c语言代码如何实现贪吃蛇动画
本文地址: https://pptw.com/jishu/594603.html
使用webpack和rollup打包组件库的方法 c++11新特性有哪些

游客 回复需填写必要信息