#include <stdio.h>
#include <conio.h>
#include <GRAPHICS.H>
#include <STDLIB.H>
//#include "iostream.h"
#define n1 "01 "
#define n2 "02 "
#define n3 "03 "
#define n4 "04 "
#define n5 "05 "
#define n6 "06 "
#define n7 "07 "
#define n8 "08 "
#define n9 "09 "
#define n10 "10 "
#define n11 "11 "
#define n12 "12 "
#define n13 "13 "
#define n14 "14 "
#define n15 "15 "
#define z "\xdb\xdb"
void main()
{
int jd [4][4];
int jt [16];
int i;
int j;
int a;
int t;
int m;
int k;
int s;
int x;
int y;
int kp;
int jtt;
int it;
int jb;
int ib;
int crc;
int gd=DETECT, gm;
initgraph(&gd, &gm, "..\\bgi ");
randomize();
jb=ib=0;
setcolor(12);
outtextxy (1,5,"joorchin");
outtextxy (1,20,"By Negar Sabbaghian");
outtextxy (1,30,"Movment By Arrow's (UP,DOWN'LEFT,RIGHT)");
outtextxy (1,40,"SHOOT By Space");
outtextxy (1,50,"For Exit Press (Q)");
m=0;
t=0;
for (i=0;i<4;i++){
for (j=0;j<4;j++){
do{
s=0;
a=rand();
a+=32768;
a&=255;
a/=17;
for (k=0;k<t;k++)
if (a==jt[k]) s=1;
if (s==0) break;
}while (0==0);
jt[t]=a;
m=a;
jd[i][j]=m;
t+=1;
};
};
jmprld:
i=j=0;
for (i=0;i<4;i++){
for (j=0;j<4;j++){
x=j+1;
x*=40;
x+=200;
y=i+1;
y*=40;
y+=150;
setcolor(0);
outtextxy (x,y,z);
};
};
t=0;
for (i=0;i<4;i++){
for (j=0;j<4;j++){
a=jd[i][j];
x=j+1;
x*=40;
x+=200;
y=i+1;
y*=40;
y+=150;
if (i==ib && j==jb) setcolor(11);
else setcolor(2);
switch(a){
case 1:
outtextxy (x,y,n1);
break;
case 2:
outtextxy (x,y,n2);
break;
case 3:
outtextxy (x,y,n3);
break;
case 4:
outtextxy (x,y,n4);
break;
case 5:
outtextxy (x,y,n5);
break;
case 6:
outtextxy (x,y,n6);
break;
case 7:
outtextxy (x,y,n7);
break;
case 8:
outtextxy (x,y,n8);
break;
case 9:
outtextxy (x,y,n9);
break;
case 10:
outtextxy (x,y,n10);
break;
case 11:
outtextxy (x,y,n11);
break;
case 12:
outtextxy (x,y,n12);
break;
case 13:
outtextxy (x,y,n13);
break;
case 14:
outtextxy (x,y,n14);
break;
case 15:
outtextxy (x,y,n15);
break;
case 0:
setcolor(0);
outtextxy (x,y,z);
break;
}
jt[t]=jd[i][j];
t+=1;
};
};
crc=0;
for (t=0;t<15;t++)
if (jt[t]!=t+1) crc=1;
if (crc==0) goto WON;
i=ib;
j=jb;
do {
kp=getche();
if (kp==0) kp=getche();
if (kp!=72 && kp!=75 && kp!=77 && kp!=80) goto arrjp;
a=jd[i][j];
x=j+1;
x*=40;
x+=200;
y=i+1;
y*=40;
y+=150;
setcolor(0);
outtextxy (x,y,z);
setcolor(2);
switch(a){
case 1:
outtextxy (x,y,n1);
break;
case 2:
outtextxy (x,y,n2);
break;
case 3:
outtextxy (x,y,n3);
break;
case 4:
outtextxy (x,y,n4);
break;
case 5:
outtextxy (x,y,n5);
break;
case 6:
outtextxy (x,y,n6);
break;
case 7:
outtextxy (x,y,n7);
break;
case 8:
outtextxy (x,y,n8);
break;
case 9:
outtextxy (x,y,n9);
break;
case 10:
outtextxy (x,y,n10);
break;
case 11:
outtextxy (x,y,n11);
break;
case 12:
outtextxy (x,y,n12);
break;
case 13:
outtextxy (x,y,n13);
break;
case 14:
outtextxy (x,y,n14);
break;
case 15:
outtextxy (x,y,n15);
break;
case 0:
setcolor(0);
outtextxy (x,y,z);
break;
}
Rtkt:
if (kp==72)
if (i==0) i=3;
else i--;
if (kp==80)
if (i==3) i=0;
else i++;
if (kp==75)
if (j==0) j=3;
else j--;
if (kp==77)
if (j==3) j=0;
else j++;
a=jd[i][j];
if (a==0) goto Rtkt;
x=j+1;
x*=40;
x+=200;
y=i+1;
y*=40;
y+=150;
setcolor(0);
outtextxy (x,y,z);
setcolor(11);
switch(a){
case 1:
outtextxy (x,y,n1);
break;
case 2:
outtextxy (x,y,n2);
break;
case 3:
outtextxy (x,y,n3);
break;
case 4:
outtextxy (x,y,n4);
break;
case 5:
outtextxy (x,y,n5);
break;
case 6:
outtextxy (x,y,n6);
break;
case 7:
outtextxy (x,y,n7);
break;
case 8:
outtextxy (x,y,n8);
break;
case 9:
outtextxy (x,y,n9);
break;
case 10:
outtextxy (x,y,n10);
break;
case 11:
outtextxy (x,y,n11);
break;
case 12:
outtextxy (x,y,n12);
break;
case 13:
outtextxy (x,y,n13);
break;
case 14:
outtextxy (x,y,n14);
break;
case 15:
outtextxy (x,y,n15);
break;
case 0:
setcolor(0);
outtextxy (x,y,z);
break;
}
arrjp:
if (kp==32) {
for (jtt=j;jtt<4;jtt++)
if (jd[i][jtt]==0){
for (y=jtt;y>=j;y--)
jd[i][y]=jd[i][y-1];
jd[i][j]=0;
ib=i;
if (j<3) jb=j+1;
else jb=jtt;
goto jmprld;
};
for (jtt=j;jtt>=0;jtt--)
if (jd[i][jtt]==0){
for (y=jtt;y<=j;y++)
jd[i][y]=jd[i][y+1];
jd[i][j]=0;
ib=i;
if (j>0) jb=j-1;
else jb=jtt;
goto jmprld;
};
for (jtt=i;jtt<4;jtt++)
if (jd[jtt][j]==0){
for (y=jtt;y>=i;y--)
jd[y][j]=jd[y-1][j];
jd[i][j]=0;
if (i<3) ib=i+1;
else ib=jtt;
jb=j;
goto jmprld;
};
for (jtt=i;jtt>=0;jtt--)
if (jd[jtt][j]==0){
for (y=jtt;y<=i;y++)
jd[y][j]=jd[y+1][j];
jd[i][j]=0;
if (i>0) ib=i-1;
else ib=jtt;
jb=j;
goto jmprld;
};
};
} while (kp!=113 && kp!=81);
goto end;
WON:
setcolor(14);
outtextxy (250,370,"You Are WON !!!");
end:
setcolor(13);
outtextxy (10,450,"Press Any Key To Exit...");
t=0;
for (i=0;i<4;i++){
for (j=0;j<4;j++){
a=jd[i][j];
//printf("%d ",a);
t+=1;
};
};
//printf("%d",a);
getche();
closegraph();
system("cls");
}