0% found this document useful (0 votes)
54 views14 pages

Shuffle

This C program implements a shuffle game where the user must rearrange numbered tiles on a 4x4 grid to their correct positions by clicking or using arrow keys. It initializes graphics mode, generates a random tile arrangement, and allows the user to swap adjacent tiles. It tracks the number of moves and checks after each one if the tiles are in the right order. When solved, it plays a sound and displays a congratulations message. The user can also exit or restart the game from on-screen buttons.

Uploaded by

Ramya Balaji
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
54 views14 pages

Shuffle

This C program implements a shuffle game where the user must rearrange numbered tiles on a 4x4 grid to their correct positions by clicking or using arrow keys. It initializes graphics mode, generates a random tile arrangement, and allows the user to swap adjacent tiles. It tracks the number of moves and checks after each one if the tiles are in the right order. When solved, it plays a sound and displays a congratulations message. The user can also exit or restart the game from on-screen buttons.

Uploaded by

Ramya Balaji
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 14

#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();

You might also like