Thursday 24 October 2013

C++ : Code and play Rattle Snake Game ( with Graphics )


Lines Used : 504

Copy the codes below :

#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#include <dos.h>
#include <iostream.h>
#include <fstream.h>
#include <string.h>


void main(void)
{
   int gdriver = DETECT, gmode, errorcode;
   void
*body,*food,*tail1,*tail2,*tail3,*tail4,*head1,*head2,*head3,*head4;
   int x, y,X[5000],Y[5000],i=3,
maxx,maxy,speed=100,bo=10,t[10],score=0,hscore=20;
   unsigned int size;
   char a='6',b,scor[4],hs[4];
   int k=2,l,r1,r2,f=0,z=100,first=0,second=1;;
   r1=300;
   r2=350;

   ifstream infile("c:\tc\bin\rattle.txt");
   infile.getline(hs,4);
   infile.close();
   hscore = atoi(hs);



   /* initialize graphics and local variables */
   initgraph(&gdriver, &gmode, "c:\tc\bgi");

   /* read result of initialization */
   errorcode = graphresult();
   if (errorcode != grOk)  /* an error occurred */
   {
      printf("Graphics error: %s", grapherrormsg(errorcode));
      printf("Press any key to halt:");
      getch();
      exit(1); /* terminate with an error code */
   }
   maxx = getmaxx();
   maxy = getmaxy();
   y = 160;
   x = 80;
   for(int j=0; j
   {
    X[i-j]=x-bo*(j+1);
    Y[i-j]=y;

   }

   //body

   setfillstyle(1,2);
   bar(10,10,20,20);
   setcolor(0);
   setlinestyle(0,1,3);
   line(9,9,21,21);
   line(9,21,21,9);
   size = imagesize(10,10,20,20);
   body = malloc(size);
   getimage(10,10,20,20,body);
   cleardevice();

   setcolor(0);
   //tail1-right
   t[0]=20; t[1]=10;
   t[2]=10; t[3]=10;
   t[4]=20; t[5]=15;
   t[6]=10; t[7]=20;
   t[8]=20; t[9]=21;
   fillpoly(5, t);
   size = imagesize(10,10,20,21);
   tail1 = malloc(size);
   getimage(10,10,20,21,tail1);
   cleardevice();

   //tail2-left
   t[0]=10; t[1]=10;
   t[2]=20; t[3]=10;
   t[4]=10; t[5]=15;
   t[6]=20; t[7]=20;
   t[8]=10; t[9]=21;
   fillpoly(5, t);
   size = imagesize(10,10,20,21);
   tail2 = malloc(size);
   getimage(10,10,20,21,tail2);
   cleardevice();

   //tail3-up
   t[0]=10; t[1]=20;
   t[2]=10; t[3]=10;
   t[4]=15; t[5]=20;
   t[6]=20; t[7]=10;
   t[8]=20; t[9]=21;
   fillpoly(5, t);
   size = imagesize(10,10,20,21);
   tail3 = malloc(size);
   getimage(10,10,20,21,tail3);
   cleardevice();

   //tail4-down
   t[0]=10; t[1]=10;
   t[2]=10; t[3]=21;
   t[4]=15; t[5]=10;
   t[6]=20; t[7]=21;
   t[8]=20; t[9]=10;
   fillpoly(5, t);
   size = imagesize(10,10,20,21);
   tail4 = malloc(size);
   getimage(10,10,20,21,tail4);
   cleardevice();

   //head1-right
   setlinestyle(1,1,1);
   setcolor(2);
   fillellipse(10,10,10,5);
   setcolor(4);
   //eyes
   fillellipse(15,7,1,1);
   fillellipse(15,13,1,1);
   size = imagesize(10,5,20,15);
   head1 = malloc(size);
   getimage(10,5,20,15,head1);

   //head2-left
   //eyes
   fillellipse(5,7,1,1);
   fillellipse(5,13,1,1);
   size = imagesize(0,5,10,15);
   head2 = malloc(size);
   getimage(0,5,10,15,head2);
   cleardevice();

   //head3-up
   //eyes
   setcolor(2);
   fillellipse(12,12,5,10);
   setcolor(4);
   fillellipse(9,6,1,1);
   fillellipse(15,6,1,1);
   size = imagesize(7,2,18,12);
   head3 = malloc(size);
   getimage(7,2,18,12,head3);


   //head4-down
   //eyes
   fillellipse(9,17,1,1);
   fillellipse(15,17,1,1);
   size = imagesize(7,12,18,22);
   head4 = malloc(size);
   getimage(7,12,18,22,head4);
   cleardevice();


   //food
   setcolor(15);
   setfillstyle(1,15);
   fillellipse(10,10,3,5);
   size = imagesize(5,3,15,17);
   food = malloc(size);
   getimage(5,3,15,17,food);
   cleardevice();

    /* repeat until a key is pressed */

   maxx=getmaxx();
   maxy=getmaxy();
   setlinestyle(0,1,3);
   setcolor(9);
   rectangle(0,0,maxx,maxy);
   setlinestyle(0,1,2);
   line(maxx-150,0,maxx-150,maxy);
   setcolor(8);
   setfillstyle(1,8);
   bar(maxx-147,3,maxx-3,63);
   setcolor(12);
   int maze=1;
   if(maze==1)
   {
   setfillstyle(1,6);
   bar(4,4,maxx-154,14);
   bar(4,4,14,maxy-4);
   bar(4,maxy-4,maxx-154,maxy-14);
   bar(maxx-154-10,4,maxx-154,maxy-4);
   }


   settextstyle(0,0,1);
   delay(300);
   outtextxy(maxx-125,30,"RATTLE SNAKE");
   delay(300);
   setcolor(11);
   setlinestyle(0,1,2);
   rectangle(maxx-145,65,maxx-5,205);
   outtextxy(maxx-128,70,"INSTRUCTIONS");
   delay(200);
   setcolor(6);
   outtextxy(maxx-140,90,"Commands     Key");
   delay(300);
   setcolor(8);
   outtextxy(maxx-140,110," Move Up      8");
   delay(50);
   outtextxy(maxx-140,130," Move Down    5");
    delay(50);
   outtextxy(maxx-140,150," Move Right   6");
    delay(50);
   outtextxy(maxx-140,170," Move Left    4");
    delay(50);
   outtextxy(maxx-140,190," Exit         0");
   delay(200);
   setcolor(12);
   setlinestyle(0,1,2);
   rectangle(maxx-145,210,maxx-5,350);
   setcolor(1);
   outtextxy(maxx-130,220,"Player's Name");
   setcolor(15);
   outtextxy(maxx-100,230,"4ntipatika");
   setcolor(4);
   delay(200);
   itoa(score,scor,10);
   outtextxy(maxx-140,250,"Score");
   outtextxy(maxx-50,250,scor);
   delay(200);
   setcolor(10);
   outtextxy(maxx-140,280,"Level");
   delay(200);
   setcolor(13);
   outtextxy(maxx-140,310,"Maze        1");
   delay(200);
   setcolor(14);
   outtextxy(maxx-140,340,"High Score  ");
   outtextxy(maxx-50,340,hs);

   for(j=0; j
   {
    putpixel(random(maxx-150),random(maxy),6);
    delay(1);
   }

   while (a!='0')
   {

       // plot new image
      if(a=='6')
        putimage(x, y, head1, XOR_PUT);
      if(a=='4')
        putimage(x, y, head2, XOR_PUT);
      if(a=='8')
        putimage(x, y, head3, XOR_PUT);
      if(a=='5')
        putimage(x, y, head4, XOR_PUT);

      for(j=0; j<k j=""></k>
      {
       putimage(X[i-j], Y[i-j], body, XOR_PUT);
      }

      if((X[i-j-1]-X[i-j])
        putimage(X[i-j], Y[i-j], tail1, XOR_PUT);

      if((X[i-j-1]-X[i-j])>0  && (Y[i-j-1]-Y[i-j])==0)
        putimage(X[i-j], Y[i-j], tail2, XOR_PUT);

      if((X[i-j-1]-X[i-j])==0  && (Y[i-j-1]-Y[i-j])
        putimage(X[i-j], Y[i-j], tail3, XOR_PUT);

      if((X[i-j-1]-X[i-j])==0  && (Y[i-j-1]-Y[i-j])>0)
        putimage(X[i-j], Y[i-j], tail4, XOR_PUT);

      delay(speed);

      if(second==1)
      {
    setcolor(15);
    outtextxy(maxx-140,360,"Press Any Key...");
    getch();
    setcolor(0);
    outtextxy(maxx-140,360,"Press Any Key...");
    a='6';

    second=2;
      }


      if(first==1)
      {
    setcolor(15);
    outtextxy(maxx-140,360,"Congratulations  ");
    sound(100);
    delay(300);
    nosound();
    getch();
    setcolor(0);
    outtextxy(maxx-140,360,"Congratulations  ");
    second++;
    first=2;

      }

    // erase old image
      if(a=='6')
        putimage(x, y, head1, XOR_PUT);
      if(a=='4')
        putimage(x, y, head2, XOR_PUT);
      if(a=='8')
        putimage(x, y, head3, XOR_PUT);
      if(a=='5')
        putimage(x, y, head4, XOR_PUT);


      for(j=0; j<k j=""></k>
      {
       putimage(X[i-j], Y[i-j], body, XOR_PUT);

      }

      if((X[i-j-1]-X[i-j])
        putimage(X[i-j], Y[i-j], tail1, XOR_PUT);

      if((X[i-j-1]-X[i-j])>0  && (Y[i-j-1]-Y[i-j])==0)
        putimage(X[i-j], Y[i-j], tail2, XOR_PUT);

      if((X[i-j-1]-X[i-j])==0  && (Y[i-j-1]-Y[i-j])
        putimage(X[i-j], Y[i-j], tail3, XOR_PUT);

      if((X[i-j-1]-X[i-j])==0  && (Y[i-j-1]-Y[i-j])>0)
        putimage(X[i-j], Y[i-j], tail4, XOR_PUT);


      if(f==0)
      {
    putimage(r1,r2,food,XOR_PUT);
    f=1;
      }

      z--;
      if((x>=r1 && y>=r2 && x
x>=r1-10 && y>=r2-10) || z==0)
      {
    if(z!=0)
    {
        sound(800);
        delay(20);
        setcolor(0);
        score += 10;
        outtextxy(maxx-50,250,scor);
        itoa(score,scor,10);
        if(score>hscore)
        {
            strcpy(hs,scor);
            setfillstyle(1,1);
            bar(maxx-140,337,maxx-20,348);
            setcolor(14);
            outtextxy(maxx-50,340,hs);
            outtextxy(maxx-140,340,"High Score  ");
            if(first==0)
            {
            first=1;
            }
        }
        setcolor(4);
        outtextxy(maxx-50,250,scor);
        k++;
    nosound();
    }
    z=100;
    putimage(r1,r2,food,XOR_PUT);
    repr1:
    r1=random(450);
        if(r1
           goto repr1;
    repr2:
    r2=random(400);
        if(r2
        goto repr2;

    f=0;
      }


      i++;
      X[i]=x;
      Y[i]=y;

      b=a;
      if(kbhit())
      {
        rep:
        a=getche();

        if((b=='6' && a=='4') || (b=='4' && a=='6'))
            a=b;

        if((b=='8' && a=='5') || (b=='5' && a=='8'))
            a=b;

        if(a!='6' && a!='4' && a!='8' && a!='0' && a!='5')
            a=b;
      }

 /*     if(x>maxx-170)
    x=0;

      if(y>maxy)
    y=0;*/

      if(a=='8')
    y -= bo;

      if(a=='5')
    y += bo;

      if(a=='4')
    x -= bo;

      if(a=='6')
    x += bo;

      for(j=i+1; j<i-k j--=""></i-k>
      {
    if((Y[i]>=Y[j] && Y[i]
    {
        if((X[i]>=X[j] && X[i]
        {
            a='0';
        }

         outtextxy(maxx-140,360,"C ");


    }

    if((X[i]>=X[j] && X[i]
    {
        if((Y[i]>=Y[j] && Y[i]
        {
            a='0';
        }

            outtextxy(maxx-140,360,"C  ");
    }

       }

/*      for(j=i; j<i-k j--=""></i-k>
      {
    if((y>=Y[j] && y
    {
        if((x>=X[j] && x
        {
            a='5';
        }
    }

    if((x>=X[j] && x
    {
        if((y>=Y[j] && y
        {
            a='5';
        }
    }
    if(j==0)
        break;
      }      */


  /*    if(x
    x=maxx-170;

    if(y
    y=maxy;*/

    if(maze==1)
    {
        if(x<=14 || x>=maxx-184 || y<=14 || y>=maxy-14)
        {
           a='0';
        }
    }

   }

   if(score>hscore)
   {
    ofstream onfile("c:\tc\bin\rattle.txt");
    onfile
    onfile.close();
   }

   setcolor(15);
   outtextxy(maxx-140,390,"    Gameover");
   sound(100);
   delay(400);
   nosound();
   getch();
   /* clean up */
   free(body);
   closegraph();

}
That's all Folks.Dont forget to click like and say

Yash

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation.

0 comments:

Post a Comment

 

Copyright @ 2013 H@cking Tricks.