人人喜欢的手游网!
首页 贪吃蛇从1到30关,贪吃的苹果蛇第30关怎么过 第30关通关攻略

    贪吃蛇从1到30关,贪吃的苹果蛇第30关怎么过 第30关通关攻略

    发布时间: 编辑:konglu 阅读量:2次

    大家好,感谢邀请,今天来为大家分享一下贪吃蛇从1到30关的问题,以及和贪吃的苹果蛇第30关怎么过 第30关通关攻略的一些困惑,大家要是还不太明白的话,也没有关系,因为接下来将为大家分享,希望可以帮助到大家,解决大家的问题,下面就开始吧!

    一、c语言 贪吃蛇 程序

    基本思路:

    蛇每吃一个食物蛇身子就增加一格,用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 20

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

    }

    扩展资料:

    实现逻辑

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

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

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

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

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

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

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

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

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

    参考资料来源:百度百科-C语言

    二、c语言贪吃蛇代码

    基本思路:

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

    #include<stdio.h>

    #include<conio.h>

    #include<windows.h>

    #define BEG_X 2

    #define BEG_Y 1

    贪吃蛇从1到30关,贪吃的苹果蛇第30关怎么过 第30关通关攻略

    #define WID 20

    #define HEI 20

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

    }

    扩展资料:

    实现逻辑

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

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

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

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

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

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

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

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

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

    参考资料来源:百度百科-C语言

    三、贪吃的苹果蛇第30关怎么过 第30关通关攻略

    在《贪吃的苹果蛇》中很多玩家还不清楚第30关怎么过。接下来就让小编给大家带来《贪吃的苹果蛇》第30关通关攻略,感兴趣的小伙伴们一起来看看吧。

    《贪吃的苹果蛇》第30关通关攻略

    1、先把头上的石头向顶一格,然后吃掉左侧的苹果,

    2、然后向中间移一格,吃掉上方的苹果后向右上移动吃掉最上边的苹果,

    3、然后向左移动一格后左侧石头会掉落在苹果上方,我们移动到石头左侧把它顶到中间

    4、然后我们从画面下方通过吃掉最后两个苹果

    5、最后走右侧把右侧的石头也顶到中间,我们走到石头的上方直行就可以走到黑洞。

    游戏玩法

    1、玩家可以自由的进行控制,因为贪吃蛇是拥有机械的身体,所以是跟经典的贪吃蛇操作不一样的;

    2、贪吃蛇只有几节身体,每节身体都会弯曲,将会带来非常有趣的折叠形状,带来更加趣味的控制玩法;

    3、所有的难度都是越来越难,越到后续的游戏关卡,都将会带来更加困难的过程,玩家需要适应节奏;

    4、拥有不同的平台,玩家需要控制贪吃蛇越过缝隙,才能安全的到达其中的大门位置,破解其中的关卡。

    ​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​以上就是《贪吃的苹果蛇》第30关通关攻略,更多游戏攻略请持续关注游戏网!​​​​​​​​

    OK,关于贪吃蛇从1到30关和贪吃的苹果蛇第30关怎么过 第30关通关攻略的内容到此结束了,希望对大家有所帮助。

    相关资讯
    猜你喜欢