15 puzzle problem program in c

15 puzzle problem program in c


15 puzzle problem program in c


#include <stdio.h>

void movenumbers();
void moveright();
void moveleft();
void moveup();
void movedown();
int checkforfinish();
void displaytable();

int table[4][4];

void movenumbers(){
	char key;
	int s;
	while(key!='e'){		
        printf("\n----MENU----\nfor moveup enter 'u'\nfor movedown enter 'd'\nfor moveleft enter 'l'\nfor moveright enter 'r'\nTo exit enter 'e'\nTo checkforfinish enter 'c'\n");
        printf("Enter your choice: ");
        scanf("%s",&key);
		switch(key){
			case 'l':
				moveleft();
				displaytable();
				break;
			case 'r':
				moveright();
				displaytable();
				break;
			case 'u':
				moveup();
				displaytable();
				break;
			case 'd':
				movedown();
				displaytable();
				break;
			case 'c':				
				s=checkforfinish();
				if(s==1){
					printf("Game Completed Successfully!");	
				} 
				else{
					printf("Continue with the moves");
					movenumbers();
				}
				break;
			case 'e':
				printf("Exit!");
				break;			
		}
	}
}

void moveright(){
	int i,j,temp;
	for(i=0;i<4;i++){
		for(j=0;j<4;j++){
			if(table[i][j]==0 && j!=0){
				temp=table[i][j-1];
				table[i][j-1]=0;
				table[i][j]=temp;
			}
		}
	}
}

void moveleft(){
	int i,j,temp;
	for(i=3;i>=0;i--){
		for(j=3;j>=0;j--){
			if(table[i][j]==0 && j!=3){
				temp=table[i][j+1];
				table[i][j+1]=0;
				table[i][j]=temp;
			}
		}
	}
}

void moveup(){
	int i,j,temp;
	for(i=3;i>=0;i--){
		for(j=3;j>=0;j--){
			if(table[i][j]==0 && i!=3){
				temp=table[i+1][j];
				table[i+1][j]=0;
				table[i][j]=temp;
			}
		}
	}
}

void movedown(){
	int i,j,temp;
	for(i=0;i<4;i++){
		for(j=0;j<4;j++){
			if(table[i][j]==0 && i!=0){
				temp=table[i-1][j];
				table[i-1][j]=0;
				table[i][j]=temp;
			}
		}
	}
}

int checkforfinish(){
	int i,j,result=0,temp=1;
	for(i=0;i<4;i++){
		for(j=0;j<4;j++){
			if(table[i][j]==temp){
				temp++;
			}
		}
	}
	if(temp==16) result=1;
	return result;
}

void displaytable(){
	int i,j;
	for(i=0;i<4;i++){
		for(j=0;j<4;j++){
			if(table[i][j]==0){
				printf("-\t");
			}
			else{
				printf("%d\t",table[i][j]);
			}
		}
		printf("\n");
	}
}

int main(){
	int i,j;
	printf("Enter Values: \n");
	for(i=0; i<4; i++){
		for(j=0; j<4; j++){
			scanf("%d",&table[i][j]);
		}
	}
	displaytable();
	movenumbers();

	return 0;
}

Output - 
Enter Values: 
1 2 3 0
5 6 7 4
9 10 11 8
13 14 15 12
1       2       3       -  
5       6       7       4  
9       10      11      8  
13      14      15      12 

----MENU----
for moveup enter 'u'       
for movedown enter 'd'     
for moveleft enter 'l'     
for moveright enter 'r'    
To exit enter 'e'
To checkforfinish enter 'c'
Enter your choice: u
1       2       3       4
5       6       7       -
9       10      11      8
13      14      15      12

----MENU----
for moveup enter 'u'
for movedown enter 'd'
for moveleft enter 'l'
for moveright enter 'r'
To exit enter 'e'
To checkforfinish enter 'c'
Enter your choice: u
1       2       3       4
5       6       7       8
9       10      11      -
13      14      15      12

----MENU----
for moveup enter 'u'
for movedown enter 'd'
for moveleft enter 'l'
for moveright enter 'r'
To exit enter 'e'
To checkforfinish enter 'c'
Enter your choice: u
1       2       3       4
5       6       7       8
9       10      11      12
13      14      15      -

----MENU----
for moveup enter 'u'
for movedown enter 'd'
for moveleft enter 'l'
for moveright enter 'r'
To exit enter 'e'
To checkforfinish enter 'c'
Enter your choice: c
Game Completed Successfully!
----MENU----
for moveup enter 'u'
for movedown enter 'd'
for moveleft enter 'l'
for moveright enter 'r'
To exit enter 'e'
To checkforfinish enter 'c'
Enter your choice: e
Exit!

More like this -

Post a Comment

If you have any doubts, please let me know

Previous Post Next Post