How to program a scrabble game?

Questions by ronix123

Showing Answers 1 - 3 of 3 Answers

zoyarasul

  • Jul 17th, 2008
 


#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<graphics.h>
#include<dos.h>
#include<alloc.h>
#include<process.h>
union REGS in,out;
void *buf;
int size,count=0,px,py,rnd[4][4],correct=0;

float octave [7]={130.81,146.83,164.81,174.61,196,220,246.94};

int callmouse()
{    in.x.ax=1;
     int86(51,&in,&out);
     return 1;

}
void mouseposi(int &xpos,int &ypos,int &click)
{   in.x.ax=3;
    int86(51,&in,&out);
    click=out.x.bx;
    xpos=out.x.cx;
    ypos=out.x.dx;
    return ;
}
int  mousehide()
{
   in.x.ax=2;
   int86(51,&in,&out);
   return 1;
}
void done(void)
{
   int i,j;
   mousehide();
   j=0;
   int n;
   for(i=1;i<=15;i++)
   {
      n=random(7);
     sound(octave[n]*4);
      delay(300);
      setfillstyle(1,2);
      bar(42+j,425,68+j,455);
      setfillstyle(1,0);
      bar(68+j,425,72+j,455);
      j=j+29;
   }
   nosound();
   delay(1000);
   for(j=0;j<382;j+=2)
   {
     for(i=0;i<575;i+=2)
     {
    putpixel(26+i,25+j,4);
    putpixel(26+i,460-j,4);
    putpixel(25+j*3/4,28+i*3/4,2);
    putpixel(595-j*3/4,458-i*3/4,2);
    delay(0);
     }
   }
   delay(1000);
   settextstyle(1,0,5);
   setcolor(14);

   outtextxy(320,300,"http://electrofriends.com");
   outtextxy(321,300,"http://electrofriends.com");
   delay(500);
   getch();
   exit(0);
}
checknum(int mat[4][4])
{
   int k=0,i,j;
   correct=0;
   for(i=0;i<=3;i++)
   {
     for(j=0;j<=3;j++)
     {
    k++;
    if(k==mat[i][j])
       correct++;
     }
   }
   gotoxy(10,11);
   printf("NUMBERS ARE IN CORRECT POSITION IS ..: %d  ",correct);
   if(correct==15)
   {
      bar(130,40,480,80);
      settextstyle(1,0,4);
      outtextxy(300,60,"CONGRAGULATIONS !");
      done();
   }
   else
   {
      bar(20,415,480,463);
      j=0;
      for(i=1;i<=correct;i++)
      {
     setfillstyle(1,1);
     bar(42+j,425,68+j,455);
     setfillstyle(1,0);
     bar(68+j,425,72+j,455);
     j=j+29;
      }
   }
   return 0;
}

void  move(int &a,int &b,int &c,int &d,int &w,int &x,int &y,int &z,int &num)
{
   if(a>192 && b>190 && c<403 && d<404)
   {
      sound(600);
      count++;
      gotoxy(10,9);
      printf("NUMBER OF MOVES..: %d   ",count);
      mousehide();
      size=imagesize(a,b,c,d);
      free(buf);
      buf=malloc(size);
      getimage(a,b,c,d,buf);
      bar(a,b,c,d);
      putimage(w,x,buf,COPY_PUT);
      w=a;
      x=b;
      y=c;
      z=d;
      if(num==1)
      {
     rnd[px][py]=rnd[px+1][py];
     rnd[px+1][py]=0;
     px++;
      }
      else if(num==2)
      {
     rnd[px][py]=rnd[px-1][py];
     rnd[px-1][py]=0;
     px--;
      }
      else if(num==3)
      {
     rnd[px][py]=rnd[px][py+1];
     rnd[px][py+1]=0;
     py++;
      }
      else if(num==4)
      {
     rnd[px][py]=rnd[px][py-1];
     rnd[px][py-1]=0;
     py--;
      }
      checknum(rnd);
      callmouse();
      delay(40);
      nosound();
   }
   return ;
}

main()
{
   int a1,b1,cl,a,b,c,d,w,x,y,z,key,p=0,q=0;
   int g=DETECT,m,ext=0,rst=0,rx,ry,num,i,j;
   initgraph(&g,&m,"c:\TC\bgi");
   randomize();
   gotoxy(50,9);
   printf("http://electrofriends.com");

   do
   {
   correct=0;
   count=0;
   gotoxy(10,9);
   printf("NUMBER OF MOVES..: %d   ",count);

   gotoxy(10,11);
   printf("NUMBERS ARE IN CORRECT POSITION IS ..: %d  ",correct);
   setfillstyle(SOLID_FILL,4);
   setcolor(15);
   for(j=200;j<360;j+=50)
   {
     for(i=200;i<365;i+=50)
     {
       rectangle(j-1,i-1,j+46,i+46);
       bar(j,i,j+45,i+45);
     }
   }
   rectangle(192,190,403,404);
   settextstyle(1,0,3);
   for(i=0;i<=3;i++)
   {
     for(j=0;j<=3;j++)
     {
    rnd[i][j]=0;
     }
   }
   for(i=0;i<=15;i++)
   {
     do
     {
    rx=random(4);
    ry=random(4);
     }  while(rnd[rx][ry]);
     rnd[rx][ry]=i;
   }
   char ab[10];
   settextjustify(CENTER_TEXT,CENTER_TEXT);
   q=p=0;
   for(i=0;i<=3;i++)
   {
     for(j=0;j<=3;j++)
     {
       if(rnd[i][j]!=0)
       {
      sprintf(ab,"%d",rnd[i][j]);
      outtextxy(225+p,217+q,ab);
       }
       else
       {
      setfillstyle(1,0);
      px=i;py=j;
      bar(199+p,199+q,247+p,247+q);
      w=199+p;
      x=199+q;
      y=247+p;
      z=247+q;
       }
       p+=50 ;
     }
     p=0;
     q+=50 ;
   }
   bar(130,40,480,80);
   bar(10,425,480,455);
   setfillstyle(SOLID_FILL,4);
   rectangle(534,374,591,411);
   bar(535,375,590,410);
   outtextxy(561,390,"EXIT");
   rectangle(484,419,591,456);
   bar(485,420,590,455);
   outtextxy(538,433,"RESTART");
   setcolor(4);
   rectangle(10,10,610,470);
   rectangle(15,15,605,465);
   setcolor(14);
   rectangle(12,12,607,467);
   settextstyle(1,0,4);
   outtextxy(300,60,"SHUFFLE GAME");
   line(150,85,450,85);

   j=0;
   delay(1500);
    int n;
   for(i=1;i<=15;i++)
   {
     n=random(7);
     sound(octave[n]*4);
     delay(300);
     setfillstyle(1,2);
     bar(42+j,425,68+j,455);
     setfillstyle(1,0);
     bar(68+j,425,72+j,455);
     j=j+29;
   }
   nosound();
   setfillstyle(SOLID_FILL,0);
   bar(30,425,480,455);
   settextstyle(2,0,5);
   outtextxy(250,425,"YOU CAN USE ARROW BUTTONS OR MOUSE TO MOVE BLOCKS.");
   outtextxy(250,450,"      PRESS ANY KEY TO START........" );



   getch();
   bar(20,415,480,463);
  callmouse();
   do
   {
      gotoxy(10,20);
      mouseposi(a1,b1,cl);
      if(a1>w && a1<y && b1>x+50 && b1<z+50 && cl==1)
     {
       num=1;
       move(w,x+50,y,z+50,w,x,y,z,num);                   //up
     }
      if(a1>w && a1<y && b1>x-50 && b1<z-50 && cl==1)
     {
       num=2;
       move(w,x-50,y,z-50,w,x,y,z,num);              //down
     }
      if(a1>w+50 && a1<y+50 && b1>x && b1<z && cl==1)
     {
       num=3;
       move(w+50,x,y+50,z,w,x,y,z,num);                   //left
     }
      if(a1>w-50 && a1<y-50 && b1>x && b1<z && cl==1)
     {
       num=4;
       move(w-50,x,y-50,z,w,x,y,z,num);                   //right
     }
      if(kbhit())
      {
    key=getch();
    switch(key)
    {
      case 72: num=1;
           move(w,x+50,y,z+50,w,x,y,z,num);           //up
           break;
      case 80: num=2;
           move(w,x-50,y,z-50,w,x,y,z,num);           //down
           break;
      case 75: num=3;
           move(w+50,x,y+50,z,w,x,y,z,num);          //left
           break;
      case 77: num=4;
           move(w-50,x,y-50,z,w,x,y,z,num);          //right
           break;
    }
      }

      if((a1>535 && a1<590 && b1>375 && b1<410 && cl==1) || key==27)
     done();
     rst=0;
      if(a1>485 && a1<590 && b1>420 && b1<455 && cl==1 )
      rst=1;
   } while(rst==0);
  } while(rst!=0);
  closegraph();
}

Give your answer:

If you think the above answer is not correct, Please select a reason and add your answer below.

 

Related Answered Questions

 

Related Open Questions