/*
Syed Mehroz Alam
CIS-61
FE(CIS) Sec-A
5 June 2003
*/
#include
#include
#include
#include
#include
#include
#include
#include
#define MAX 10
#define sqr(n) n*n
void shuffle(void); //shuffles the board
int found(int board[][MAX], int no); //helper funtion for shuffling
void dispboard(void); //displays the current contents of board
int getkey(void); //used to track arrow keys
void swap(int x2,int y2); //swaps x,y with x2,y2
int board[MAX][MAX];
int x,y;
int win, turns;
int ORDER;
void main(void)
{
clrscr();
textcolor(15);
gotoxy(38,4); cprintf("Puzzle");
gotoxy(38,5); cprintf("ออออออ");
gotoxy(31,7); cprintf("by Syed Mehroz Alam");
gotoxy(20,9); cprintf("CIS-61, First Year, Sec-A, Batch 2002-03");
gotoxy(20,10); cprintf(" Computer & Information Systems Dept,");
gotoxy(20,11); cprintf(" NED University, Karachi, Pakistan.");
gotoxy(20,13); cprintf(" Email: smehrozalam@yahoo.com");
gotoxy(20,16); cprintf(" Press any key to begin......");
getch();
textcolor(7);
printf("\n\n\t\tEnter Order (Maximum 10) : ");
scanf("%d", &ORDER);
if (ORDER<2 || ORDER >10)
return; //ends the program
shuffle();
dispboard();
do
{
int move=0;
while ( !(move==72 || move==80 ||move==75 || move==77 || move==1 || move==31) )
{
move=getkey();
}
if (move==1) //escape key
return;
//else if arrow keys, the do respective job
else if (move==31)
shuffle();
else if (move==80)
swap(x,y-1);
else if (move==72)
swap(x,y+1);
else if (move==77)
swap(x-1,y);
else if (move==75)
swap(x+1,y);
dispboard();
}
while(win!=1);
printf("\n\nCongratulations, You won in %d turns", turns);
getch();
}
void shuffle(void)
{
randomize();
for (int i=0;i=0 && x2<=ORDER-1 && y2>=0 && y2<=ORDER-1)
{
board[y][x]=board[y2][x2];
board[y2][x2]=sqr(ORDER);
x=x2; y=y2;
turns++;
}
}
               (
geocities.com/smehrozalam)