返回

提问 添加收藏

C语言的代码不懂

Meet-sw 发布于 2018年01月07日 (共有4个回帖)

我是大一新生,有一串贪吃蛇的代码看不懂,是关于蛇身的创建和蛇身的移动。请求各位大佬帮我仔细解释一下吧!

void initsnake()//初始化蛇身 

    snake *tail; int i; tail=(snake*)malloc(sizeof(snake));//从蛇尾开始,头插法,以x,y设定开始的位置// 
    tail->x=24;
    tail->y=5;
    tail->next=NULL;
    for(i=1;i<=4;i++) { head=(snake*)malloc(sizeof(snake)); head->next=tail;
        head->x=24+2*i;
        head->y=5;
        tail=head;
    }
    while(tail!=NULL)//从头到为,输出蛇身
    {
        Pos(tail->x,tail->y);
        printf("■");
        tail=tail->next;
    }
}

void gamecircle()//控制游戏
{
    Pos(64,15);
    printf("不能穿墙,不能咬到自己\n");
    Pos(64,16);
    printf("用↑.↓.←.→分别控制蛇的移动.");
    Pos(64,17);
    printf("F1 为加速,F2 为减速\n");
    Pos(64,18);
    printf("ESC :退出游戏.space:暂停游戏.");
    Pos(64,20);
printf("C语言研究中心 www.dotcpp.com");
status=R;
    while(1)
    {
        Pos(64,10);
        printf("得分:%d  ",score);
        Pos(64,11);
        printf("每个食物得分:%d分",add);
        if(GetAsyncKeyState(VK_UP) && status!=D)
        {
            status=U;
        }
        else if(GetAsyncKeyState(VK_DOWN) && status!=U)
        {
            status=D;
        }
        else if(GetAsyncKeyState(VK_LEFT)&& status!=R)
        {
            status=L;
        }
        else if(GetAsyncKeyState(VK_RIGHT)&& status!=L)
        {
            status=R;
        }
        else if(GetAsyncKeyState(VK_SPACE))
        {
            pause();
        }
        else if(GetAsyncKeyState(VK_ESCAPE))
        {
            endgamestatus=3;
            break;
        }
        else if(GetAsyncKeyState(VK_F1))
        {
            if(sleeptime>=50)
            {
                sleeptime=sleeptime-30;
                add=add+2;
                if(sleeptime==320)
                {
                    add=2;//防止减到1之后再加回来有错
                }
            }
        }
        else if(GetAsyncKeyState(VK_F2))
        {
            if(sleeptime<350)
            {
                sleeptime=sleeptime+30;
                add=add-2;
                if(sleeptime==350)
                {
                    add=1;  //保证最低分为1
                }
            }
        }
        Sleep(sleeptime);
        snakemove();
    }
}

Visual Studio
文明上网,理性发言
客户端 Android iPhone WP7