• 当前位置:首页>>C语言>>C语言编程实例>>又一个贪吃蛇
  • 又一个贪吃蛇
  • 有可能delay()函数里的数字大家要自己调整下.基本的结构因为完善了.

    #include "graphics.h"
    #include "stdlib.h"
    #define LEFT 0x4b00
    #define RIGHT 0x4d00
    #define DOWN 0x5000
    #define UP 0x4800
    #define ESC 0x011b
    int lose=0,i,j;
    int gd=DETECT,gr,x[200]={100,110,120,130},y[200]={100,100,100,100};
    int key,t=1,n=4,s=0,xx,yy,yes=1;
    int score[8]={0};
     begain()/*开始画面*/
    {
     setcolor(11);
     for(i=50;i<=600;i+=10)
     {
      rectangle(i,40,i+10,49);
      rectangle(i,451,i+10,460);
     }
     for(i=40;i<=450;i+=10)
     {
      rectangle(50,i,59,i+10);
      rectangle(601,i,610,i+10);
     }
    }
    over()/*结束的话*/
    {
    cleardevice();
    setcolor(RED);
    settextstyle(0,0,4);
    outtextxy(200,200,"GAME OVER");
    }
    win()/*胜利*/
    {
    cleardevice();
    setcolor(RED);
    settextstyle(0,0,4);
    outtextxy(200,200," YOU WIN! ");
    }
    doscore()/*处理分数*/
    {
     score[5]++;
     for(i=5;i>=1;i--)
      if(score[i]==10)
       {score[i-1]++;score[i]=0;}
    }
     printscore(int n)/*输出成绩*/
    {
     if(n==1)
     setcolor(YELLOW);
     else setcolor(0);
     settextstyle(0,0,2);
     for(i=0,j=50;i<8;i++,j+=20)
     {
     switch(score[i])
     {
     case 0: outtextxy(j,20,"0");break;
     case 1: outtextxy(j,20,"1");break;
     case 2: outtextxy(j,20,"2");break;
     case 3: outtextxy(j,20,"3");break;
     case 4: outtextxy(j,20,"4");break;
     case 5: outtextxy(j,20,"5");break;
     case 6: outtextxy(j,20,"6");break;
     case 7: outtextxy(j,20,"7");break;
     case 8: outtextxy(j,20,"8");break;
     case 9: outtextxy(j,20,"9");break;
     }
     }
    }
     main()
    {
     initgraph(&gd,&gr,"c:\\tc");
     cleardevice();
     begain();
     while(1)
     {
       while(!kbhit())
      {
       randomize();
       printscore(1);/*输出得分*/
       if(yes)/*出现要吃的东西*/
       {
        while(1)/*判断吃的东西是否在蛇的身上*/
        {
        xx=rand()%400+60;
        yy=rand()%350+60;
        while(xx%10!=0)
        xx++;
        while(yy%10!=0)
        yy++;
        for(i=0;i<n;i++)
        if(xx==x[i]&&yy==y[i])
        break;
        if(i>=n)
        break;
        }
        yes=0;
       }
       if(yes==0)/*画要吃的东西*/
       {
       setcolor(GREEN);
       rectangle(xx,yy,xx+10,yy-10);
       }
       for(i=n-1;i>0;i--)/*每个往前移动*/
        {
        x[i]=x[i-1];
        y[i]=y[i-1];
        }
       if(t==1)/*right*/
        x[0]+=10;
       else if(t==2)/*left*/
        x[0]-=10;
       else if(t==3)/*up*/
        y[0]-=10;
       else if(t==4)/*down*/
        y[0]+=10;
       for(i=3;i<n;i++)
       if(x[i]==x[0]&&y[i]==y[0])/*蛇的身体是否自己接触*/
        {
         over();
         lose=1

    [1] [2] 下一页  

  • 上一篇:改进的发牌程序
    下一篇:董乘宇--迷宫程序1.10版