#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
int num1[]={1,2,3,4,5,6,7,8,0};
int num2[]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,0};
int num3[]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,0};
main()
{ int f1();
int f2();
int f3();
char key=0;
str();
}
str()
{
char a;
printf("low=l\nmedium=m\nhigh=h\ninput:l,m,h\n");
a=getch();
switch(a)
{
case 108: f1();break;
case 109: f2();break;
case 104: f3();break;
case 27:break;
}
}
f1()
{
int pos;
clrscr();
randomize();
newGame1();
for(;;)
{
char key=0;
key=getch();
if(key==0) continue;
pos=GetTheNull1();
switch(key)
{
case 72:
if(pos<=5) change1(pos,pos+3);
break;
case 80:
if(pos>=3) change1(pos,pos-3);
break;
case 77:
if(pos%3!=0) change1(pos,pos-1);
break;
case 75:
if(pos%3!=2) change1(pos,pos+1);
break;
case 110:
newGame1();break;
case 120:
str(); break;
}
update1();
if(isSuccess1())
{
gotoxy(26,10);
printf("\332\304\304\304\304\304\304\304\304\304\304\304\304\267");
gotoxy(26,11);
printf("\263 \272");
gotoxy(26,12);
printf("\263 Well Done! \272");
gotoxy(26,13);
printf("\263 \272");
gotoxy(26,14);
printf("\324\315\315\315\315\315\315\315\315\315\315\315\315\274\n");
getch();
str();
}
if(key==27) break;
}
clrscr();
}
newGame1()
{
int i,a,b;
for(i=0;i<8;i++) num1[i]=i+1;
num1[8]=0;
for(i=0;i<300;i++)
{
a=random(8);
b=(a+2)%8;
change1(a,b);
}
update1();
}
update1()
{
int i,j;
for(i=0;i<=2;i++)
{
gotoxy(24,8+i*3);
for(j=0;j<=2;j++)
{
if (num1[j+i*3]!=0)
printf("\332\304\304\304\304\267");
else
printf(" ");
}
gotoxy(24,9+i*3);
for(j=0;j<=2;j++)
{
if (num1[j+i*3]!=0)
printf("\263 %d \272",num1[j+i*3]);
else
printf(" ");
}
gotoxy(24,10+i*3);
for(j=0;j<=2;j++)
{
if (num1[j+i*3]!=0)
printf("\324\315\315\315\315\274");
else
printf(" ");
}
printf("\n");
}
}
int isSuccess1()
{
int i,ret=1;
for(i=0;i<8;i++)
ret=ret&&(num1[i]==(i+1));
return ret;
}
int GetTheNull1()
{
int i;
for(i=0;i<=8;i++)
{
if (num1[i]==0)
return i;
}
}
change1(int a,int b)
{
int temp;
temp=num1[a];
num1[a]=num1[b];
num1[b]=temp;
}
f2()
{
int pos;
clrscr();
randomize();
newGame2();
for(;;)
{
char key=0;
key=getch();
if(key==0) continue;
pos=GetTheNull2();
switch(key)
{
case 72:
if(pos<=11) change2(pos,pos+4);
break;
case 80:
if(pos>=4) change2(pos,pos-4);
break;
case 77:
if(pos%4!=0) change2(pos,pos-1);
break;
case 75:
if(pos%4!=3) change2(pos,pos+1);
break;
case 110:
newGame2();break;
case 120:
str(); break;
}
update2();
if(isSuccess2())
{
gotoxy(29,7);
printf("\332\304\304\304\304\304\304\304\304\304\304\304\304\267");
gotoxy(29,8);
printf("\263 \272");
gotoxy(29,9);
printf("\263 Well Done! \272");
gotoxy(29,10);
printf("\263 \272");
gotoxy(29,11);
printf("\324\315\315\315\315\315\315\315\315\315\315\315\315\274\n");
getch();
str();
}
if(key==27) break;
}
clrscr();
}
newGame2()
{
int i,a,b;
for(i=0;i<15;i++) num2[i]=i+1;
num2[15]=0;
for(i=0;i<300;i++)
{
a=random(15);
b=(a+2)%15;
change2(a,b);
}
update2();
}
update2()
{
int i,j;
for(i=0;i<=3;i++)
{
gotoxy(24,4+i*4);
for(j=0;j<=3;j++)
{
if (num2[j+i*4]!=0)
printf("\332\304\304\304\304\267");
else
printf(" ");
}
gotoxy(24,5+i*4);
for(j=0;j<=3;j++)
{
if (num2[j+i*4]!=0)
printf("\263 %2d \272",num2[j+i*4]);
else
printf(" ");
}
gotoxy(24,6+i*4);
for(j=0;j<=3;j++)
{
if (num2[j+i*4]!=0)
printf("\324\315\315\315\315\274");
else
printf(" ");
}
printf("\n");
}
}
int isSuccess2()
{
int i,ret=1;
for(i=0;i<15;i++)
ret=ret&&(num2[i]==(i+1));
return ret;
}
int GetTheNull2()
{
int i;
for(i=0;i<=15;i++)
{
if (num2[i]==0)
return i;
}
}
change2(int a,int b)
{
int temp;
temp=num2[a];
num2[a]=num2[b];
num2[b]=temp;
}
f3()
{
int pos;
clrscr();
randomize();
newGame3();
for(;;)
{
char key=0;
key=getch();
if(key==0) continue;
pos=GetTheNull3();
switch(key)
{
case 72:
if(pos<=19) change3(pos,pos+5);
break;
case 80:
if(pos>=5) change3(pos,pos-5);
break;
case 77:
if(pos%5!=0) change3(pos,pos-1);
break;
case 75:
if(pos%5!=4) change3(pos,pos+1);
break;
case 110:
newGame3();break;
case 120:
str(); break;
}
update3();
if(isSuccess3())
{
gotoxy(30,6);
printf("\332\304\304\304\304\304\304\304\304\304\304\304\304\267");
gotoxy(30,7);
printf("\263 \272");
gotoxy(30,8);
printf("\263 Well Done! \272");
gotoxy(30,9);
printf("\263 \272");
gotoxy(30,10);
printf("\324\315\315\315\315\315\315\315\315\315\315\315\315\274\n");
getch();
str();
}
if(key==27) break;
}
clrscr();
}
newGame3()
{
int i,a,b;
for(i=0;i<24;i++) num3[i]=i+1;
num3[24]=0;
for(i=0;i<900;i++)
{
a=random(24);
b=(a+2)%24;
change3(a,b);
}
update3();
}
update3()
{
int i,j;
for(i=0;i<=4;i++)
{
gotoxy(24,1+i*5);
for(j=0;j<=4;j++)
{
if (num3[j+i*5]!=0)
printf("\332\304\304\304\304\267");
else
printf(" ");
}
gotoxy(24,2+i*5);
for(j=0;j<=4;j++)
{
if (num3[j+i*5]!=0)
printf("\263 %2d \272",num3[j+i*5]);
else
printf(" ");
}
gotoxy(24,3+i*5);
for(j=0;j<=4;j++)
{
if (num3[j+i*5]!=0)
printf("\324\315\315\315\315\274");
else
printf(" ");
}
printf("\n");
}
}
int isSuccess3()
{
int i,ret=1;
for(i=0;i<24;i++)
ret=ret&&(num3[i]==(i+1));
return ret;
}
int GetTheNull3()
{
int i;
for(i=0;i<=24;i++)
{
if (num3[i]==0)
return i;
}
}
change3(int a,int b)
{
int temp;
temp=num3[a];
num3[a]=num3[b];
num3[b]=temp;
}
|