{"repository":{"description":"      #include <stdio.h>      #include <time.h>      #include <stdlib.h>      #include <conio.h>      #include<time.h>      #include<ctype.h>      #include <time.h>      #include <windows.h>      #include <process.h>      #define UP 72      #define DOWN 80      #define LEFT 75      #define RIGHT 77       int length;      int bend_no;      int len;      char key;      void record();      void load();      int life;      void Delay(long double);      void Move();      void gotoxy(int x, int y);      void GotoXY(int x,int y);      void Bend();      void Boarder();      void Down();      void Left();      void Up();      void Right();      void ExitGame();      int Scoreonly();      struct coordinate{          int x;          int y;          int direction;      };      typedef struct coordinate coordinate;      coordinate head, bend[500],food,body[30];      int main()      {         system(\" color 3\");         char key;          Print();          system(\"cls\");          load();          length=5;          head.x=25;          head.y=20;          head.direction=RIGHT;          Boarder();          Food(); //to generate food coordinates initially          life=3; //number of extra lives          bend[0]=head;          Move();   //initialing initial bend coordinate          return 0;      }        void Move()      {          int a,i;          do{              Food();              fflush(stdin);              len=0;              for(i=0;i<30;i++)              {                  body[i].x=0;                  body[i].y=0;                  if(i==length)                  break;              }              Delay(length);              Boarder();              if(head.direction==RIGHT)                  Right();              else if(head.direction==LEFT)                  Left();              else if(head.direction==DOWN)                  Down();              else if(head.direction==UP)                  Up();              ExitGame();            }while(!kbhit());          a=getch();          if(a==27)          {              system(\"cls\");              exit(0);          }          key=getch();          if((key==RIGHT&&head.direction!=LEFT&&head.direction!=RIGHT)||(key==LEFT&&head.direction!=RIGHT&&head.direction!=LEFT)||(key==UP&&head.direction!=DOWN&&head.direction!=UP)||(key==DOWN&&head.direction!=UP&&head.direction!=DOWN))          {              bend_no++;              bend[bend_no]=head;              head.direction=key;              if(key==UP)                  head.y--;              if(key==DOWN)                  head.y++;              if(key==RIGHT)                  head.x++;              if(key==LEFT)                  head.x--;              Move();            }          else if(key==27)          {              system(\"cls\");              exit(0);          }          else          {              printf(\"\\a\");              Move();          }      }      void gotoxy(int x, int y)      {       COORD coord;       coord.X = x;       coord.Y = y;       SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);      }      void GotoXY(int x, int y)      {          HANDLE a;          COORD b;          fflush(stdout);          b.X = x;          b.Y = y;          a = GetStdHandle(STD_OUTPUT_HANDLE);          SetConsoleCursorPosition(a,b);       }      void load(){          int row,col,r,c,q;          gotoxy(36,14);          printf(\"loading...\");          gotoxy(30,15);          for(r=1;r<=20;r++){          for(q=0;q<=100000000;q++);//to display the character slowly          printf(\"%c\",177);}          getch();      }      void Down()      {          int i;          for(i=0;i<=(head.y-bend[bend_no].y)&&len<length;i++)          {              GotoXY(head.x,head.y-i);              {                  if(len==0)                      printf(\"v\");                  else                      printf(\"*\");              }              body[len].x=head.x;              body[len].y=head.y-i;              len++;          }          Bend();          if(!kbhit())              head.y++;        }      void Delay(long double k)      {          Score();          long double i;          for(i=0;i<=(10000000);i++);      }      void ExitGame()      {          int i,check=0;          for(i=4;i<length;i++)   //starts with 4 because it needs minimum 4 element to touch its own body          {              if(body[0].x==body[i].x&&body[0].y==body[i].y)              {                  check++;    //check's value increases as the coordinates of head is equal to any other body coordinate              }              if(i==length||check!=0)                  break;          }          if(head.x<=10||head.x>=70||head.y<=10||head.y>=30||check!=0)          {              life--;              if(life>=0)              {                  head.x=25;                  head.y=20;                  bend_no=0;                  head.direction=RIGHT;                  Move();              }              else              {                  system(\"cls\");                  printf(\"All lives completed\\nBetter Luck Next Time!!!\\nPress any key to quit the game\\n\");                  record();                  exit(0);              }          }      }      void Food()      {          if(head.x==food.x&&head.y==food.y)          {              length++;              time_t a;              a=time(0);              srand(a);              food.x=rand()%70;              if(food.x<=10)                  food.x+=11;              food.y=rand()%30;              if(food.y<=10)                  food.y+=11;          }          else if(food.x==0)/*to create food for the first time coz global variable are initialized with 0*/          {              food.x=rand()%70;              if(food.x<=10)                  food.x+=11;              food.y=rand()%30;              if(food.y<=10)                  food.y+=11;          }        }      void Left()      {          int i;          for(i=0;i<=(bend[bend_no].x-head.x)&&len<length;i++)          {              GotoXY((head.x+i),head.y);             {                      if(len==0)                          printf(\"<\");                      else                          printf(\"*\");              }              body[len].x=head.x+i;              body[len].y=head.y;              len++;          }          Bend();          if(!kbhit())              head.x--;        }      void Right()      {          int i;          for(i=0;i<=(head.x-bend[bend_no].x)&&len<length;i++)          {              //GotoXY((head.x-i),head.y);              body[len].x=head.x-i;              body[len].y=head.y;              GotoXY(body[len].x,body[len].y);              {                  if(len==0)                      printf(\">\");                  else                      printf(\"*\");              }              /*body[len].x=head.x-i;              body[len].y=head.y;*/              len++;          }          Bend();          if(!kbhit())              head.x++;        }      void Bend()      {          int i,j,diff;          for(i=bend_no;i>=0&&len<length;i--)          {                  if(bend[i].x==bend[i-1].x)                  {                      diff=bend[i].y-bend[i-1].y;                      if(diff<0)                          for(j=1;j<=(-diff);j++)                          {                                body[len].x=bend[i].x;                              body[len].y=bend[i].y+j;                              GotoXY(body[len].x,body[len].y);                              printf(\"*\");                              len++;                              if(len==length)                                  break;                          }                      else if(diff>0)                          for(j=1;j<=diff;j++)                          {                              /*GotoXY(bend[i].x,(bend[i].y-j));                              printf(\"*\");*/                              body[len].x=bend[i].x;                              body[len].y=bend[i].y-j;                              GotoXY(body[len].x,body[len].y);                              printf(\"*\");                              len++;                              if(len==length)                                  break;                          }                  }              else if(bend[i].y==bend[i-1].y)              {                  diff=bend[i].x-bend[i-1].x;                  if(diff<0)                      for(j=1;j<=(-diff)&&len<length;j++)                      {                          /*GotoXY((bend[i].x+j),bend[i].y);                          printf(\"*\");*/                          body[len].x=bend[i].x+j;                          body[len].y=bend[i].y;                          GotoXY(body[len].x,body[len].y);                              printf(\"*\");                          len++;                          if(len==length)                                  break;                      }                  else if(diff>0)                      for(j=1;j<=diff&&len<length;j++)                      {                          /*GotoXY((bend[i].x-j),bend[i].y);                          printf(\"*\");*/                          body[len].x=bend[i].x-j;                          body[len].y=bend[i].y;                          GotoXY(body[len].x,body[len].y);                              printf(\"*\");                          len++;                          if(len==length)                              break;                      }              }          }      }      void Boarder()      {          system(\"cls\");          int i;          GotoXY(food.x,food.y);   /*displaying food*/              printf(\"F\");          for(i=10;i<71;i++)          {              GotoXY(i,10);                  printf(\"!\");              GotoXY(i,30);                  printf(\"!\");          }          for(i=10;i<31;i++)          {              GotoXY(10,i);                  printf(\"!\");              GotoXY(70,i);              printf(\"!\");          }      }      void Print()      {          //GotoXY(10,12);          printf(\"\\tWelcome to the mini Snake game.(press any key to continue)\\n\");         getch();          system(\"cls\");          printf(\"\\tGame instructions:\\n\");          printf(\"\\n-> Use arrow keys to move the snake.\\n\\n-> You will be provided foods at the several coordinates of the screen which you have to eat. Everytime you eat a food the length of the snake will be increased by 1 element and thus the score.\\n\\n-> Here you are provided with three lives. Your life will decrease as you hit the wall or snake's body.\\n\\n-> YOu can pause the game in its middle by pressing any key. To continue the paused game press any other key once again\\n\\n-> If you want to exit press esc. \\n\");          printf(\"\\n\\nPress any key to play game...\");          if(getch()==27)          exit(0);      }      void record(){          char plname[20],nplname[20],cha,c;          int i,j,px;          FILE *info;          info=fopen(\"record.txt\",\"a+\");          getch();          system(\"cls\");          printf(\"Enter your name\\n\");          scanf(\"%[^\\n]\",plname);          //************************          for(j=0;plname[j]!='\\0';j++){ //to convert the first letter after space to capital          nplname[0]=toupper(plname[0]);          if(plname[j-1]==' '){          nplname[j]=toupper(plname[j]);          nplname[j-1]=plname[j-1];}          else nplname[j]=plname[j];          }          nplname[j]='\\0';          //*****************************          //sdfprintf(info,\"\\t\\t\\tPlayers List\\n\");          fprintf(info,\"Player Name :%s\\n\",nplname);           //for date and time        time_t mytime;         mytime = time(NULL);         fprintf(info,\"Played Date:%s\",ctime(&mytime));            //**************************            fprintf(info,\"Score:%d\\n\",px=Scoreonly());//call score to display score            //fprintf(info,\"\\nLevel:%d\\n\",10);//call level to display level          for(i=0;i<=50;i++)          fprintf(info,\"%c\",'_');          fprintf(info,\"\\n\");          fclose(info);          printf(\"wanna see past records press 'y'\\n\");          cha=getch();          system(\"cls\");          if(cha=='y'){          info=fopen(\"record.txt\",\"r\");          do{              putchar(c=getc(info));              }while(c!=EOF);}            fclose(info);      }      int Score()      {          int score;          GotoXY(20,8);          score=length-5;          printf(\"SCORE : %d\",(length-5));          score=length-5;          GotoXY(50,8);          printf(\"Life : %d\",life);          return score;      }      int Scoreonly()      {      int score=Score();      system(\"cls\");      return score;      }      void Up()      {          int i;          for(i=0;i<=(bend[bend_no].y-head.y)&&len<length;i++)          {              GotoXY(head.x,head.y+i);              {                  if(len==0)                      printf(\"^\");                  else                      printf(\"*\");              }              body[len].x=head.x;              body[len].y=head.y+i;              len++;          }          Bend();          if(!kbhit())              head.y--;        }","watchers":0,"stargazers":0,"forks":0,"fork":false,"size":0,"owner":"atiqxp","private":false,"open_issues":0,"has_issues":true,"has_downloads":true,"has_wiki":true,"created_at":"2013-09-27T07:30:20-07:00","pushed_at":"2013-09-27T07:30:20-07:00","master_branch":"master"},"actor_attributes":{"type":"User","email":"da39a3ee5e6b4b0d3255bfef95601890afd80709"},"url":"https://github.com/atiqxp/paste"}