#include
#include
#include
#include

int drawsprite(char SpriteFile[12],int XCo, int YCo,int FarX, int FarY,
		int Trans);
void initgraphics();
//These are used for arrow keys since getch() does not return extended char
const char UP = 72;
const char LEFT = 75;
const char RIGHT = 77;
const char DOWN = 80;

int main()
{
initgraphics();
  char Key = 0;
  int Scroll[2];
   Scroll[0] = 100;
   Scroll[1] = 0;
  //int True = 1;
  int X = 50;
  int Y = (getmaxy() - 82);
   //Draw Bricks
    for(int I = 0; I < 660; I+=30)
     drawsprite("C:\\MARIO\\Bricks.spr",I,(getmaxy()-32),32,32,0);
    for(I = 300; I < 450; I+=30)
     drawsprite("C:\\MARIO\\Bricks.spr",I,(getmaxy()-64),32,32,0);

   drawsprite("C:\\MARIO\\Mario.spr",X,Y,30,60,9);
   drawsprite("C:\\MARIO\\Tunnel.spr",200,(getmaxy()-110),80,90,0);
   drawsprite("C:\\MARIO\\Mushroom.spr",Scroll[0],200,32,32,0);
   drawsprite("C:\\MARIO\\Turtle.spr",X+250,getmaxy()-96,32,32,15);
   setbkcolor(BLACK);

   while(Key!=27)
    {

     /*
	 Scroll[0]++;
	 drawsprite("C:\\MARIO\\Mushroom.spr",Scroll[0],getmaxy()-62,32,32,0);
	 drawsprite("C:\\MARIO\\Turtle.spr",Scroll[0],Y+20,32,32,15);
      if( (Scroll[0] == getmaxx()- 80) )
	{


	 True = 0;
	 Scroll[1] = Scroll[0];
	}

      //if( (Scroll[1] == getmaxx() - 32))
	Scroll[1]--;
	drawsprite("C:\\MARIO\\Mushroom.spr",Scroll[1]-30,getmaxy()-62,32,32,15);
	drawsprite("C:\\MARIO\\Turtle.spr",Scroll[1],Y+20,32,32,15);
	if(True == 0 && Scroll[1] == 20)
	  {



	   Scroll[0] = Scroll[1];

	  }
       */

      if(kbhit())
       {

	Key = getch();
	if(Key == RIGHT)
	 {

	  X+=3;
	  setfillstyle(SOLID_FILL,BLACK);
	  bar((X-3),Y,X,(Y+30));
	  drawsprite("C:\\MARIO\\Mario.spr",X,Y,30,60,9);

	 }
	if(Key == LEFT)
	 {
	  X-=3;
	  setfillstyle(SOLID_FILL,BLACK);
	  bar((X+30),Y,X+35,(Y+30));
	  drawsprite("C:\\MARIO\\Mario.spr",X,Y,30,60,0);
	 }
	if(Key == 'j' || Key == 'J')
	 {
	  Y-=30;
	   drawsprite("C:\\MARIO\\Mario.spr",X,Y,30,60,9);
	   setfillstyle(SOLID_FILL,BLACK);
	   delay(100);
	   bar((X-3),Y-30,X+60,(Y+60));
	  Y+=30;
	   setfillstyle(SOLID_FILL,BLACK);
	   bar((X-3),Y+30,X,(Y+30));
	   drawsprite("C:\\MARIO\\Mario.spr",X,Y,30,60,9);

	 }
	setvisualpage(0);
	}
       }


return 0;
}
void initgraphics()
{
   int gdriver = DETECT, gmode, errorcode;
   initgraph(&gdriver, &gmode, "c:\\tc\\bgi");


}

int drawsprite(char SpriteFile[12],int XCo, int YCo,int FarX, int FarY,
 int Trans)
{
 ifstream IFile;//this is the sprite file
 int X=0,Y=0;
 int A = 0;
 int Sprite[120][120];
  for(X=0;X<50;X++)
  for(Y=0;Y<50;Y++)
   Sprite[X][Y] = 0;

 IFile.open(SpriteFile);
	for(X=0;X> Sprite[Y][X];

	for(X=0;X

    Source: geocities.com/nit3shift