Puzzle Games in C++ - source code generation

Started by pingu.buj, Apr 07, 2008, 01:48 PM

Previous topic - Next topic

pingu.buj

C++ Games - Puzzle

       #include<iostream.h>

       #include<dos.h>

       #include<conio.h>

       #include<graphics.h>

       #include<stdio.h>

     // GLOBAL VARIABLES

       int a[5][5];

       int t[16]={0,4,11,12,7,1,15,5,13,6,10,3,2,14,8,9};

       int test[16]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};

       struct pos
     {
       int h,v;
     }p[4][4];

     int row=4,col=4;


         // FUNCTION PROTOTYPES

     void game(int); //MOVEMENT

     void rec();   //DRAWING RECTANGLE

     void pri();   //PRINTING NUMBERS INITIALLY

     int getkey();   // TO TRACE KEY PRESSED

     inline void space() { cout<<"    "; }

     inline void print(int r,int c) { cout<<a[r][c]; }

     void init();   //TO STORE CO-ORDINATES

     int stop();     // STOPING CRITERION

     void gopr(int,int);   //TO PRINT NUMBER IN GAME

void main()
{
     int gm=DETECT,gd=DETECT;
     initgraph(&gm,&gd,"");

  int d,cr=1;
  init();
  rec();
  pri();

   while(cr!=16)
  {
    d=getkey();
    game(d);
    cr=stop();
  }

  settextstyle(10,0,1);
  outtextxy(400,300,"You are winner!");
  getch();


}
   void rec()
  {
      setcolor(5);

     for(int i=0;i<200;i+=50)
    {
      for(int j=0;j<240;j+=60)
      rectangle(j+100,i+100,j+50,i+60);
    }
t k=1;
   for(int x=0,i=6;x<4;x++,i+=3)
   {
     for(int y=0,j=10;y<4&&k<16;y++,j+=7,k++)
     {

       gotoxy(p
  • [y].h,p
  • [y].v);
           cout<<a
  • [y];
         }
       }

      }
        int getkey()
      {
       union REGS i,o;
       while(!kbhit());
        i.h.ah=0;
       int86(22,&i,&o);
        return(o.h.ah);
      }

    void init()
      {
        int k=1;
        for(int x=0,i=6;x<4;x++,i+=3)
       {
         for(int y=0,j=10;y<4;y++,j+=7)
         {
           p
  • [y].h=j;
           p
  • [y].v=i;
           a
  • [y]=t[k++];
         }
       }

      }
         void game(int s)
      {
          int r=row-1;
          int c=col-1;

           if(s==77 &&c!=0)  //right
         {
          col--;

            a[r][c]=a[r][c-1];


          gopr(r,c-1);

          space();

          gopr(r,c);

          print(r,c-1);
         }

           if(s==80 && r!=0)   //down
         {
            row--;

             a[r][c]=a[r-1][c];

           gopr(r-1,c);

            space();

           gopr(r,c);

           print(r-1,c);

         }

             if(s==75 && c!=3)     //left
        {
             a[r][c]=a[r][c+1];
           col++;
           gopr(r,c+1);

           space();


           gopr(r,c);

           print(r,c+1);

        }

           if(s==72 &&r!=3)     //up
        {

           a[r][c]=a[r+1][c];

           row++;

           gopr(r+1,c);

           space();

           gopr(r,c);

           print(r+1,c);

        }

          }

       void gopr(int x, int y)
           {
        gotoxy(p
  • [y].h,p
  • [y].v);
           }
         int stop()
        {
         int k=0,d=1;
           for(int x=0;x<4;x++)
          {
           for(int y=0;y<4;y++)
           {
        if(a
  • [y]==test[k])
          d++;

          k++;
       }
          }
           return d;
         }
? pingu.buj ?