美文网首页
[程序]贪吃蛇

[程序]贪吃蛇

作者: Lapse千叶 | 来源:发表于2014-02-12 00:05 被阅读83次

    2013/03/10

    写不出来稿子也写不出来三题的时候突然燃起程序的心- -、

    没装上EGE也没学会GUI,半年没碰代码居然搞定了这种东西真是不可思议啊……

    用的是最基础的东西,没有一点算法优化,没有一点模块化,理论上提高算法效率可以降低频闪频率,也许有空会做做优化?眼睛都被晃瞎了还做个毛啊- -、

    戳这里下载程序

    注意事项:

    1、方向键控制

    2、任意键暂停

    3、关掉中文输入法,否则你乱按的话会抖屏

    4、因为不会前面提到的两种技术,所以会有频闪,注意保护眼睛

    5、可能会报毒,不要理它- -、

    更新报告:

    v1.1:

    根据瑶瑶的建议删去了下面的lenth提示,感觉还不错- -、

    下面上代码

    /*
      Name: 贪吃蛇 
      Copyright: 千叶@lapse from virtue 
      Version: v1.1 
      Date: 10-03-13 13:14
      Description:方向键控制&任意键暂停&关掉中文输入法&注意保护眼睛 
    */
    #include <stdio.h> 
    #include <stdlib.h>
    #include <windows.h>
    #include <unistd.h>
    #include <time.h>
    #include <conio.h>
    int main()
    {   
      char f;                      //标志变量 
      srand((unsigned)time(NULL)); //随机种子
      do
      {
        char a[50][100];           //框架 
        int i,j;               //循环变量 
        int lenth=5;               //身长 
        int dir[80];               //方向 
        int x=10,y=30,x0,y0;       //头的位置 
        int m=10,n=26;             //尾的位置 
        int eggx,eggy;             //蛋的位置 
        char k1,k2;                //接收输入的变量
        for(i=0;i<24;i++)          //初始化框架 
          for(j=0;j<79;j++)
            a[i][j]=' ';
        for(i=26;i<=30;i++)        //初始化身
          a[10][i]='*';
        for(i=1;i<=lenth;i++)      //初始化方向 
          dir[i]=4;
        do                         //初始化蛋 
        {
          eggx=rand()%24;          
          eggy=rand()%79;
        }while(a[eggx][eggy]=='*');
        a[eggx][eggy]='o';
        while(1)                   //主循环 
        {
          if(kbhit())              //接收输入 
          {
            k1=getch();
            k2=getch(); 
            if(k2==72 && x-1!=x0) dir[lenth]=1;       
            else if(k2==80 && x+1!=x0)  dir[lenth]=2;
            else if(k2==75 && y-1!=y0)  dir[lenth]=3;
            else if(k2==77 && y+1!=y0)  dir[lenth]=4; 
          } 
          else       
          { 
            x0=x;y0=y;
            if(dir[lenth]==1)           //头行进 
              if(x-1>=0) x--; else x=23;
            else if(dir[lenth]==2)
              if(x+1<24) x++; else x=0;
            else if(dir[lenth]==3)
              if(y-1>=0) y--; else y=78;
            else if(dir[lenth]==4)
              if(y+1<79) y++; else y=0;
            if(a[x][y]=='*' && !(x==m && y==n))     //撞死 
            {
              printf("Game Over\n");
              break; 
            } 
            if(a[x][y]=='o')      //吃蛋 
            { 
              a[x][y]='*';
              lenth++; 
              dir[lenth]=dir[lenth-1];
              do
              {
                eggx=rand()%24;          
                eggy=rand()%79;
              }while(a[eggx][eggy]=='*');
              a[eggx][eggy]='o';
            }
            else                       //前进一格
            {                                         
              a[m][n]=' ';  
              a[x][y]='*';
              for(i=0;i<lenth;i++) dir[i]="dir[i+1];" if(dir[0]="=1)" if(m-1="">=0) m--; else m=23;
              else if(dir[0]==2)
                if(m+1<24) m++; else m=0; 
              else if(dir[0]==3)
                if(n-1>=0) n--; else n=78; 
              else if(dir[0]==4)
                if(n+1<79) n++; else n=0; 
            }
            for(i=0;i<24;i++)               //输出 
            {
              for(j=0;j<79;j++)
              {
                printf("%c",a[i][j]);
              }  
              printf("\n");
            }
            sleep(100);                     //速度控制 
            system("cls");                  //清屏 
          }
        }
        printf("lenth: %d\n",lenth);
        printf("Again?(y/n)");             
        do
        { 
          f=getch();
        }while(f!='y' && f!='n');
      }while(f=='y');
      return 0;
    }
    

    相关文章

      网友评论

          本文标题:[程序]贪吃蛇

          本文链接:https://www.haomeiwen.com/subject/pzkhtttx.html