| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 863 人关注过本帖
标题:初学者求如下贪吃蛇代码的注释
只看楼主 加入收藏
小青虾
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2012-12-3
结帖率:100%
收藏
 问题点数:0 回复次数:13 
初学者求如下贪吃蛇代码的注释
程序代码:
while(flag==1)
            {
                if(t>5)
                    break;

                flag=0;

                pt=head;
                while(pt!=NULL)
                {
                    if(food.x==pt->x && food.y==pt->y)
                    {
                        flag=1;
                        food.x=rand()%15;
                        food.y=rand()%15;
                        break;
                    }
                    pt=pt->next;
                }
                t++;
            }
            if(t>5)
            {
                if(c=='d')
                {
                    food.x=head->x+1;
                    food.y=head->y;
                    if(food.x>=15)
                        food.x-=15;
                }
                else if(c=='a')
                {
                    food.x=head->x-1;
                    food.y=head->y;
                    if(food.x<0)
                        food.x+=15;
                }
                else if(c=='w')
                {
                    food.x=head->x;
                    food.y=head->y+1;
                    if(food.y>=15)
                        food.y-=15;
                }
                else if(c=='s')
                {
                    food.x=head->x;
                    food.y=head->y-1;
                    if(food.y<0)
                        food.y+=15;
                }
            }
        }

        if(kbhit())
        {
            c1=getch();
            if(c1==27)
                break;
           
            if(c!='d' && c1=='a')
                c=c1;
            else if(c!='a' && c1=='d')
                c=c1;
            else if(c!='w' && c1=='s')
                c=c1;
            else if(c!='s' && c1=='w')
                c=c1;
        }

        pt=rear;
        while(pt!=head )
        {
            pt->x=pt->pre->x;
            pt->y=pt->pre->y;
            pt=pt->pre;
        }

        if(c=='d')
        {
            head->y+=1;
            if(head->y>=15)
                head->y-=15;
        }
        else if(c=='a')
        {
            head->y-=1;
            if(head->y<0)
                head->y+=15;
        }
        else if(c=='w')
        {
            head->x-=1;
            if(head->x<0)
                head->x+=15;
        }
        else if(c=='s')
        {
            head->x+=1;
            if(head->x>=15)
                head->x-=15;
        }

        pt=head->next;
        while(pt!=NULL)
        {
            if(head->x==pt->x && head->y==pt->y)
            {
                gameover=1;
                break;
            }
            pt=pt->next ;
        }
        if(gameover==1)
            break;
       
        system("cls");
        printf("  ───────────────\n");
        for(i=0;i<15;i++)
        {
            printf("");
            for(j=0;j<15;j++)
            {

                flag=0;
                pt=head;
                while(pt!=NULL)
                {
                    if(i==pt->x && j==pt->y)
                    {
                        if(pt==head)
                            printf("");
                        else
                            printf("");
                        flag=1;
                        break;
                    }
                    pt=pt->next;
                }


                if(flag==0)
                {
                    if(i==food.x && j==food.y)
                    {
                        putchar(food.c);
                        putchar(food.c);
                        continue;
                    }
                    printf("  ");
                }
            }
            printf("");
            putchar('\n');
        }
        printf("  ───────────────\n");
       
        _sleep(200);   
    }

    if(gameover==1)
        puts("game over!\n");

    getch();
} 
搜索更多相关主题的帖子: head 贪吃蛇 color 
2012-12-10 17:42
小青虾
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2012-12-3
收藏
得分:0 
在论坛上看到这段代码不是很懂,麻烦好心人教教小弟了
2012-12-10 17:44
小青虾
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2012-12-3
收藏
得分:0 
顶上,求指教啊。。。。
2012-12-10 21:44
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
收藏
得分:0 
这个也太多了,具体哪一部分


[fly]存在即是合理[/fly]
2012-12-10 22:28
wangxiang935
Rank: 3Rank: 3
来 自:南京
等 级:论坛游侠
帖 子:177
专家分:179
注 册:2012-7-11
收藏
得分:0 
好长~~
2012-12-10 22:49
小青虾
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2012-12-3
收藏
得分:0 
回复 4楼 azzbcc
程序代码:
while(flag==1)
            {
                if(t>5)
                    break;

                flag=0;

                pt=head;
                while(pt!=NULL)
                {
                    if(food.x==pt->x && food.y==pt->y)
                    {
                        flag=1;
                        food.x=rand()%15;
                        food.y=rand()%15;
                        break;
                    }
                    pt=pt->next;
                }
                t++;
            }
            if(t>5)
            {
                if(c=='d')
                {
                    food.x=head->x+1;
                    food.y=head->y;
                    if(food.x>=15)
                        food.x-=15;
                }
                else if(c=='a')
                {
                    food.x=head->x-1;
                    food.y=head->y;
                    if(food.x<0)
                        food.x+=15;
                }
                else if(c=='w')
                {
                    food.x=head->x;
                    food.y=head->y+1;
                    if(food.y>=15)
                        food.y-=15;
                }
                else if(c=='s')
                {
                    food.x=head->x;
                    food.y=head->y-1;
                    if(food.y<0)
                        food.y+=15;
                }
            }
        }

        if(kbhit())
        {
            c1=getch();
            if(c1==27)
                break;
          
            if(c!='d' && c1=='a')
                c=c1;
            else if(c!='a' && c1=='d')
                c=c1;
            else if(c!='w' && c1=='s')
                c=c1;
            else if(c!='s' && c1=='w')
                c=c1;
        }

先这段吧
2012-12-11 09:48
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
收藏
得分:0 
程序代码:
    while(flag==1)
    {
        if(t>5)    //定义不明确,功能不了解,猜测初始值为0,检测食物是否连续5次出现在蛇身
            break;
   
        flag=0;
   
        pt=head;//将指针指向蛇头
        while(pt!=NULL)
        {    //检测食物是否在蛇身上
            if(food.x==pt->x && food.y==pt->y)
            {    //食物在蛇身上
                flag=1;        //置flag为 1,使while(flag==1)成立,再次从蛇头判断
                food.x=rand()%15;    //重新生成食物
                food.y=rand()%15;
                break;
            }
            pt=pt->next;//检测下一节蛇身
        }
        t++;
    }
    if(t>5)
    {
        if(c=='d')
        {    //上面的食物连续 5次出现在蛇身,直接将食物,放在蛇头旁边
            food.x=head->x+1;
            food.y=head->y;
            if(food.x>=15)    //15可能是边界,食物出边界时食物出现在对面边界
                food.x-=15;
        }
        else if(c=='a')
        {
            food.x=head->x-1;
            food.y=head->y;
            if(food.x<0)
                food.x+=15;
        }
        else if(c=='w')
        {
            food.x=head->x;
            food.y=head->y+1;
            if(food.y>=15)
                food.y-=15;
        }
        else if(c=='s')
        {
            food.x=head->x;
            food.y=head->y-1;
            if(food.y<0)
                food.y+=15;
        }
    }
}
if(kbhit())    //若有键盘输入
{
    c1=getch();//获取输入信息
    if(c1==27)    //ESC直接退出
        break;

    if(c!='d' && c1=='a')
        c=c1;
    else if(c!='a' && c1=='d')
        c=c1;
    else if(c!='w' && c1=='s')
        c=c1;
    else if(c!='s' && c1=='w')
        c=c1;
}


[fly]存在即是合理[/fly]
2012-12-11 10:28
小青虾
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2012-12-3
收藏
得分:0 
回复 7楼 azzbcc
如果不用“w”“a”“d”“s”控制方向改为用方向键控制方向对于这个程序可行么
2012-12-11 12:19
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
收藏
得分:0 
回复 8楼 小青虾
这个,当然可以。


[fly]存在即是合理[/fly]
2012-12-11 12:37
风起尘恋
Rank: 2
等 级:论坛游民
帖 子:18
专家分:15
注 册:2012-11-15
收藏
得分:0 
接着学。。。
2012-12-11 15:48
快速回复:初学者求如下贪吃蛇代码的注释
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.038294 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved