Thursday, June 30, 2011

Snake game in C

The libraries used in this snake game are:
  • graphics.h
  • stdio.h
  • conio.h
  • dos.h
  • time.h
  • stdlib.h
#include <graphics.h>
#include <stdlib.h>
#include <dos.h>
#include <conio.h>
#include <stdio.h>
#include <time.h>


check();
end();
win();
int m[500],n[500],con=8,temp,a,i,j,t,s=500,z;
clock_t start,stop;
void main(void)

{
int gd=DETECT,gm,ch,maxx,maxy,x=13,y=14,p,q,spd=100;

initgraph(&gd,&gm,"D:\\TC\\BGI");


setcolor(WHITE);
settextstyle(3,0,6);
outtextxy(150,2," SNAKE GAME ");
settextstyle(6,0,2);
setcolor(RED);
outtextxy(20,80," Use Arrow Keys To Direct The Snake ");
setcolor(YELLOW);
outtextxy(20,140," Avoid The Head Of Snake Not To Hit Any Part Of Snake");
outtextxy(20,160," Pick The Beats Untill You Win The Game ");
setcolor(BLUE);
outtextxy(20,240," Press 'Esc' Anytime To Exit ");
outtextxy(20,220," Press Any Key To Continue ");

setcolor(GREEN);


outtextxy(400,380,"Made By :");
outtextxy(400,400,"Shubhang");
outtextxy(400,420,"Mohit");
outtextxy(400,440,"Rahul");



ch=getch();
if(ch==27) exit(0);
cleardevice();
maxx=getmaxx();
maxy=getmaxy();
for (z=0;z<3;z++)
{
sound(s);
delay(1000);
nosound();
delay(1000);
s+=500;
}
randomize();

p=random(maxx);
temp=p%13;
p=p-temp;
q=random(maxy);
temp=q%14;
q=q-temp;



start=clock();
a=0,i=0;
while(1)
{

 setcolor(WHITE);
 setfillstyle(SOLID_FILL,con+5);
 circle(p,q,5);
 floodfill(p,q,WHITE);

   if( kbhit() )
   {
     ch=getch(); if(ch==0) ch=getch();
     if(ch==72&& a!=2) a=1;
     if(ch==80&& a!=1) a=2;
     if(ch==75&& a!=4) a=3;
     if(ch==77&& a!=3) a=4;
      }
       else
     {
     if(ch==27
     ) break;
     }

       if(i<20){
     m[i]=x;
     n[i]=y;
     i++;
        }

   if(i>=20)

   {
     for(j=con;j>=0;j--){
      m[1+j]=m[j];
      n[1+j]=n[j];
       }
     m[0]=x;
     n[0]=y;

     setcolor(WHITE);
     setfillstyle(SOLID_FILL,con);
     circle(m[0],n[0],8);
     floodfill(m[0],n[0],WHITE);

     setcolor(WHITE);
     for(j=1;j<con;j++)
     {
    setfillstyle(SOLID_FILL,con+j%3);
     circle(m[j],n[j],5);
     floodfill(m[j],n[j],WHITE);
          }
       delay(spd);

    setcolor(BLACK);
    setfillstyle(SOLID_FILL,BLACK);
     circle(m[0],n[0],8);
     floodfill(m[0],n[0],BLACK);

     setcolor(BLACK);
    setfillstyle(SOLID_FILL,BLACK);
     circle(m[j],n[j],5);
     floodfill(m[j],n[j],BLACK);

     }
     stop=clock();
     t=(stop-start)/CLK_TCK;
     check();

    if(x==p&&y==q)
    {
    con=con+1;
    if(spd>=5)
    spd=spd-5;

    else spd=5;

    if(con>50)
    win();

    p=random(maxx);
    temp=p%13;
    p=p-temp;
    q=random(maxy);
    temp=q%14;
    q=q-temp;
        }

    if(a==1)
    y =  y-14;

    if(y<0)
    { temp=maxy%14;
    y=maxy-temp;
    }

    if(a==2)
    y =  y+14;

    if(y>maxy)
    y=0;

    if(a==3)
    x =  x-13;

    if(x<0)
    {
    temp=maxx%13;
    x=maxx-temp;
    }

    if(a==4)
    x =  x+13;

    if(x>maxx)
    x=0;

    if(a==0)
    {
    y = y+14 ;
    x=x+13;
    }

   }

 }


check()
{
   int a;
   for(a=1;a<con;a++)

if(m[0]==m[a] && n[0]==n[a]) end();
   else continue;
   return 0;
}

end()

{

    int j,i;
   setcolor(WHITE);
   for(i=0;i<5;i++)
   {
   delay(500);
   cleardevice();
   delay(500);
   for(j=0;j<=con;j++)
   {
    setfillstyle(SOLID_FILL,RED);
    circle(m[j],n[j],5);
    floodfill(m[j],n[j],RED);
   }

   }

    settextstyle(3,0,4);
    outtextxy(150,150,"    GAME OVER ");
    getch();
    getch();
    exit(0);
    return 0;
    }

win()
{
int j,i;
setcolor(WHITE);
   for(i=0;i<5;i++)
   {
   for(j=0;j<=con;j++)
   {
     setfillstyle(SOLID_FILL,con);
     circle(m[j],n[j],5);
     floodfill(m[j],n[j],WHITE);
   }

    delay(500);
    cleardevice();
    delay(500);
   }
  settextstyle(3,0,4);
  outtextxy(210,320," YOU WIN ");
  getch();
  exit(0);
  return 0;
}
NOTE : If the game shows any linking error 
then go to options>linkers>libraries and the tick on graphics.This
 method automatically link the graphics. 

No comments:

Post a Comment