iT邦幫忙

0

研究程式碼的概念(數字拼圖)-考其中的意義(可以幫我了解一下大方向的概念嗎感謝)-天佑台灣

要解釋給助教聽(這是我的題目)
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <conio.h>
void UP();/將空格處向上移動一格/
void DN();/將空格處向下移動一格/
void LT();/將空格處向左移動一格/
void RT();/將空格處向右移動一格/
int X=3,Y=3,i,j,N,H=0;
void printMATRIX();
char P[4][4]={{'1','2','3','4'},{'5','6','7','8'},{'9','A','B','C'},{'D','E','F',' '}};
int main()
{
int ch1=0;
int ch2=0;
unsigned int seed;
seed=time(NULL);
srand(seed);
for(int Z=0;Z<10;Z++)
{
N=rand()%4;
switch(N)
{
case 0:
UP();
break;
case 1:
DN();
break;
case 2:
LT();
break;
case 3:
RT();
break;
default:
break;
}
}
printf(" 1 2 3 4\n");
printf(" 5 6 7 8\n");
printf(" 9 A B C\n");
printf(" D E F\n");
printf("請將下方矩陣移動成上方順序\n");
printMATRIX();
while(P[0][0]!='1'||P[0][1]!='2'||P[0][2]!='3'||P[0][3]!='4'||P[1][0]!='5'||P[1][1]!='6'||P[1][2]!='7'||P[1][3]!='8'||P[2][0]!='9'||P[2][1]!='A'||P[2][2]!='B'||P[2][3]!='C'||P[3][0]!='D'||P[3][1]!='E'||P[3][2]!='F'||P[3][3]!=' ')
{
H++; /排序正確後會跳出迴圈/
printf("\n按上下左右進行移動:");
if (ch1=getch())
{
ch2=getch();
switch(ch2) /判斷輸入的值是屬於哪種移動方式/
{
case 72:
DN();
printMATRIX();
break;
case 75:
RT();
printMATRIX();
break;
case 80:
UP();
printMATRIX();
break;
case 77:
LT();
printMATRIX();
break;
default:
printMATRIX();
break;
}
}
printf("\n計步器:第%d步",H);
}
printf("\n!!!Congratulations!!!");
printf("\n你共花了%d步完成這個拼圖",H);
}
void printMATRIX()/印出目前的陣列圖形/
{
printf("\n目前的圖形為:\n");
for(i=0;i<4;++i)
{
for(j=0;j<4;++j)
{
printf("%5c",P[i][j]);
}
printf("\n");
}
};
/移動空格的副函式/
void UP()
{
if(X>0)
{
P[X][Y]=P[X-1][Y];
P[X-1][Y]=' ';
X=X-1;
}
};
void DN()
{
if(X<3)
{
P[X][Y]=P[X+1][Y];
P[X+1][Y]=' ';
X=X+1;
}
};
void LT()
{
if(Y>0)
{
P[X][Y]=P[X][Y-1];
P[X][Y-1]=' ';
Y=Y-1;
}
};
void RT()
{
if(Y<3)
{
P[X][Y]=P[X][Y+1];
P[X][Y+1]=' ';
Y=Y+1;
}
};

1 個回答

8

我要發表回答

立即登入回答