搜索
查看: 491|回复: 5
打印 上一主题 下一主题

贪食蛇游戏

[复制链接]
跳转到指定楼层
楼主
发表于 2016-12-31 11:55:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 code016 于 2017-1-1 17:41 编辑

[mw_shl_code=c,true]#include <stdio.h>
#include <windows.h>
char a[20][21],fx='s',ax,ay;
int x[10000],y[10000],head,tail,eat=0;
void init()
{
        int i,j;
        for(i=0;i<=19;i++)
        {
                for(j=0;j<=19;j++)
                {
                        a[j]='.';
                }
                a[20]='\0';
        }
        return ;
}
void fill()
{
        int i,tx,ty;
        for(i=tail;i<=head;i++)
        {
                tx=x;ty=y;
                a[tx][ty]='@';
        }
        return;
}
void ppp()
{
        int i;
        system("cls");
        for(i=0;i<=19;i++)
                printf("%s\n",a);
        return ;
}
void addfood()
{
        int f,i;
        srand(time(NULL));
        while(1>0)
        {
                ax=rand()%20;ay=rand()%20;
                f=0;
                for(i=tail;i<=head;i++)
                {
                        if(x==ax && y==ay)
                        {
                                f=1;
                        }
                }
                if(f==0)break;
        }
        return ;
}
int main()
{
        int tx,ty;
        char ch;
        x[0]=0;y[0]=1;
        x[1]=1;y[1]=1;
        x[2]=2;y[2]=1;
        tail=0;head=2;
        addfood();
        while(1>0)
        {
                init();//清空游乐场
                fill();//向游乐场中填充该蛇身
                a[ax][ay]='$';//向游乐场中投入食物
                ppp();//打印
               
                if(kbhit()==1)//键盘是否会被按下
                {
                        ch=getch();
                        if((ch=='w' || ch=='s') && (fx=='a' || fx=='d'))
                                fx=ch;
                        if((ch=='a' || ch=='d') && (fx=='w' || fx=='s'))
                                fx=ch;
                }
                if(fx=='s')
                {
                        tx=x[head]+1; ty=y[head];
                }
                if(fx=='w')
                {
                        tx=x[head]-1; ty=y[head];
                }
                if(fx=='a')
                {
                        tx=x[head];ty=y[head]-1;
                }
                if(fx=='d')
                {
                        tx=x[head];ty=y[head]+1;
                }
                if(tx==20)tx=0;
                if(tx==-1)tx=19;
                if(ty==20)ty=0;
                if(ty==-1)ty=19;
                head++;
                x[head]=tx;y[head]=ty;
               
                if(tx==ax && ty==ay)
                        addfood();
                else
                        tail++;
                Sleep(100);
        }
        return 0;
}[/mw_shl_code]
如果你想玩“贪吃蛇”,可以试一试这段代码
楼主新帖
楼主热帖
沙发
发表于 2017-1-2 12:30:39 | 只看该作者
没有碰撞检测和边界还挺有趣,不过……整屏刷新实在太闪了
板凳
 楼主| 发表于 2017-1-7 11:25:21 | 只看该作者
本帖最后由 code016 于 2017-1-8 10:45 编辑
maxwell106 发表于 2017-1-2 12:30
没有碰撞检测和边界还挺有趣,不过……整屏刷新实在太闪了

我觉得还好,玩多了,自然就习惯了。
地板
 楼主| 发表于 2017-1-8 10:45:45 | 只看该作者
maxwell106 发表于 2017-1-2 12:30
没有碰撞检测和边界还挺有趣,不过……整屏刷新实在太闪了

说句实话,玩久了,还是会亮瞎狗眼的~~~
5#
 楼主| 发表于 2017-1-21 08:44:47 | 只看该作者
呵呵,so你想怎样,详情请上QQ。
6#
 楼主| 发表于 2017-1-24 19:43:14 | 只看该作者
你这个程序出了问题
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

广播台
特别关注
快速回复 返回顶部 返回列表