代码
#include
<
conio.h
>
#include < stdio.h >
#include < stdlib.h >
#include < graphics.h >
int a[ 3 ][ 3 ] = { 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 }; /* INITIALIZE SIX PLANS */
int b[ 3 ][ 3 ] = { 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 };
int c[ 3 ][ 3 ] = { 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 };
int d[ 3 ][ 3 ] = { 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 };
int e[ 3 ][ 3 ] = { 5 , 5 , 5 , 5 , 5 , 5 , 5 , 5 , 5 };
int f[ 3 ][ 3 ] = { 7 , 7 , 7 , 7 , 7 , 7 , 7 , 7 , 7 };
int top[ 3 ][ 3 ],front[ 3 ][ 3 ],side[ 3 ][ 3 ];
int position = 0 ,temp[ 3 ] = { 0 , 0 , 0 }, new [ 3 ][ 3 ]; /* POSITION ASSIGN THE ARROW POSITION */
int sign;
main()
{
int l = 60 ,x = 50 ,y = 50 ,key,count,input = 0 ,errorcode; /* L MEANS THE LENTH OF THE SQUARE,X MEANS THE INITAIL POSITION OF X,Y MEANS THE INITIAL POSITION OF Y */
int a1[ 3 ][ 3 ] = { 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 }; /* INITIALIZE SIX PLANS FOR BACKUP */
int b1[ 3 ][ 3 ] = { 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 };
int c1[ 3 ][ 3 ] = { 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 };
int d1[ 3 ][ 3 ] = { 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 };
int e1[ 3 ][ 3 ] = { 5 , 5 , 5 , 5 , 5 , 5 , 5 , 5 , 5 };
int f1[ 3 ][ 3 ] = { 7 , 7 , 7 , 7 , 7 , 7 , 7 , 7 , 7 };
int graphdriver = VGA,graphmode = VGAHI;
initgraph( & graphdriver, & graphmode, "" );
errorcode = graphresult();
if (errorcode != grOk) /* MEET ERROR */
{ /* SHOW THE ERROE */
printf( " Graphics error: %s\n " , grapherrormsg(errorcode));
printf( " Press any key to exit: " );
getch();
exit( 1 );
}
drawing(x,y,l); /* DRAWING THE BIG SQUARE */
drawing(x + 400 ,y,l / 2 ); /* DRAWING THE SMALL SQUARE */
do
{
sign = position % 3 ; /* COPY DATA TO SHOW */
copy ( & a, & top);
copy ( & b, & front);
copy ( & c, & side);
color(x,y,l); /* SHOWING THE BIG SQUARE */
copy ( & e, & top);
change2( & top, 1 );
copy ( & f, & front);
change2( & front, 2 );
copy ( & d, & side);
color(x + 400 ,y,l / 2 ); /* SHOWING THE SMALL SQUARE */
setcolor( 14 );
arrow(x,y,l);
key = bioskey( 0 ); /* READ KEYBORD */
switch (key)
{
case 283 :printf( " Esc " ); /* IF INPUT_KEY="ESC" TO EXIT THE PROGRAM */
goto end;
case 20480 :setcolor( 0 ); /* IF INPUT_KEY="DOWN" TO CHANGE THE ARROW */
arrow(x,y,l);
if (position == 8 )
position = 0 ;
else
position = position + 1 ;
break ; /* IF INPUT_KEY="UP" TO CHANGE THE ARROW */
case 18432 :setcolor( 0 );
arrow(x,y,l);
if (position == 0 )
position = 8 ;
else
position = position - 1 ;
break ;
case 19712 :input = 1 ; /* IF INPUT_KEY="RIGHT" TO MOVE FORWARD */
break ;
case 19200 :input = 3 ; /* IF INPUT_KEY="LEFT" TO MOVE REWARD */
break ;
case 7181 : setcolor( 0 ); /* IF INPUT_KEY="ENTER" TO RELOAD */
arrow(x,y,l);
copy( & a1, & a);
copy( & b1, & b);
copy( & c1, & c);
copy( & d1, & d);
copy( & e1, & e);
copy( & f1, & f);
position = 0 ;
break ;
case 14624 :setcolor( 0 ); /* IF INPUT_KEY="SPACE" TO RANDOM MOVE */
arrow(x,y,l);
randomize();
position = random( 9 );
input = 1 ;
break ;
}
if (input != 0 ) /* USE POSITION TO JUDGE AND CHANGE DATA */
{ /* IF INPUT=0,CHANGE CLOCKWISE,IF INPUT=3,CHANGE REVERSE-CLOCKWISE */
for (count = 0 ;count < input;count ++ )
{
if (position / 3 == 0 ) /* IF NEED TO CHANGE TOP */
{
change2( & b, 1 );
change2( & c, 1 );
change2( & d, 3 );
change2( & f, 1 );
change1( & b, & c);
change1( & c, & d);
change1( & d, & f);
change1( & f, & b);
change2( & b, 3 );
change2( & c, 3 );
change2( & d, 1 );
change2( & f, 3 );
temp[ 0 ] = 0 ;temp[ 1 ] = 0 ;temp[ 2 ] = 0 ;
if (position % 3 == 0 )
change2( & a, 1 );
if (position % 3 == 2 )
change2( & e, 1 );
}
if (position / 3 == 1 ) /* IF NEED TO CHANGE FRONT */
{
change1( & a, & b);
change1( & b, & e);
change1( & e, & d);
change1( & d, & a);
temp[ 0 ] = 0 ;temp[ 1 ] = 0 ;temp[ 2 ] = 0 ;
if (position % 3 == 0 )
change2( & f, 1 );
if (position % 3 == 2 )
change2( & c, 1 );
}
if (position / 3 == 2 ) /* IF NEED TO CHANGE SIDE */
{
change2( & a, 3 );
change2( & e, 1 );
change2( & f, 2 );
change1( & a, & c);
change1( & c, & e);
change1( & e, & f);
change1( & f, & a);
change2( & a, 1 );
change2( & e, 3 );
change2( & f, 2 );
temp[ 0 ] = 0 ;temp[ 1 ] = 0 ;temp[ 2 ] = 0 ;
if (position % 3 == 0 )
change2( & b, 1 );
if (position % 3 == 2 )
change2( & d, 1 );
}
}
input = 0 ;
}
}
while ( 1 );
end:
clearviewport(); /* CLEAR THE SCREEN */
}
drawing( int inital_x, int inital_y, int lenth) /* DRAWING THE STRUCTURE OF THE PICTURE */
{
setlinestyle( 0 , 0 , 3 );
line(inital_x + 1.5 * lenth,inital_y + 0 ,inital_x + 4.5 * lenth,inital_y + 0 );
line(inital_x + 1.0 * lenth,inital_y + 0.5 * lenth,inital_x + 4.0 * lenth,inital_y + 0.5 * lenth);
line(inital_x + 0.5 * lenth,inital_y + 1 * lenth,inital_x + 3.5 * lenth,inital_y + 1 * lenth);
line(inital_x + 0 ,inital_y + 1.5 * lenth,inital_x + 3 * lenth,inital_y + 1.5 * lenth);
line(inital_x + 0 ,inital_y + 2.5 * lenth,inital_x + 3 * lenth,inital_y + 2.5 * lenth);
line(inital_x + 0 ,inital_y + 3.5 * lenth,inital_x + 3 * lenth,inital_y + 3.5 * lenth);
line(inital_x + 0 ,inital_y + 4.5 * lenth,inital_x + 3 * lenth,inital_y + 4.5 * lenth);
line(inital_x + 0 ,inital_y + 1.5 * lenth,inital_x + 0 ,inital_y + 4.5 * lenth);
line(inital_x + 1.0 * lenth,inital_y + 1.5 * lenth,inital_x + 1.0 * lenth,inital_y + 4.5 * lenth);
line(inital_x + 2.0 * lenth,inital_y + 1.5 * lenth,inital_x + 2.0 * lenth,inital_y + 4.5 * lenth);
line(inital_x + 3.0 * lenth,inital_y + 1.5 * lenth,inital_x + 3.0 * lenth,inital_y + 4.5 * lenth);
line(inital_x + 3.5 * lenth,inital_y + 1.0 * lenth,inital_x + 3.5 * lenth,inital_y + 4.0 * lenth);
line(inital_x + 4.0 * lenth,inital_y + 0.5 * lenth,inital_x + 4.0 * lenth,inital_y + 3.5 * lenth);
line(inital_x + 4.5 * lenth,inital_y + 0 ,inital_x + 4.5 * lenth,inital_y + 3.0 * lenth);
line(inital_x + 1.5 * lenth,inital_y + 0 ,inital_x + 0 ,inital_y + 1.5 * lenth);
line(inital_x + 2.5 * lenth,inital_y + 0 ,inital_x + 1.0 * lenth,inital_y + 1.5 * lenth);
line(inital_x + 3.5 * lenth,inital_y + 0 ,inital_x + 2.0 * lenth,inital_y + 1.5 * lenth);
line(inital_x + 4.5 * lenth,inital_y + 0 ,inital_x + 3.0 * lenth,inital_y + 1.5 * lenth);
line(inital_x + 4.5 * lenth,inital_y + 1.0 * lenth,inital_x + 3.0 * lenth,inital_y + 2.5 * lenth);
line(inital_x + 4.5 * lenth,inital_y + 2.0 * lenth,inital_x + 3.0 * lenth,inital_y + 3.5 * lenth);
line(inital_x + 4.5 * lenth,inital_y + 3.0 * lenth,inital_x + 3.0 * lenth,inital_y + 4.5 * lenth);
}
color( int inital_x, int inital_y, int lenth) /* FILL COLOR BY THE DATA */
{
int i,j;
int color_num;
int x1 = inital_x + 1.5 * lenth;
int y1 = inital_y + 0.25 * lenth;
int x2,y2;
for (i = 0 ;i < 3 ;i ++ )
{
x2 = x1;
y2 = y1;
for (j = 0 ;j < 3 ;j ++ )
{
color_num = top[i][j];
setfillstyle( 1 ,color_num);
floodfill(x2,y2,WHITE);
x2 = x2 + lenth;
}
x1 = x1 - 0.5 * lenth;
y1 = y1 + 0.5 * lenth;
}
x1 = inital_x + 0.5 * lenth;
y1 = inital_y + 2 * lenth;
for (i = 0 ;i < 3 ;i ++ )
{
x2 = x1;
y2 = y1;
for (j = 0 ;j < 3 ;j ++ )
{
color_num = front[i][j];
setfillstyle( 1 ,color_num);
floodfill(x2,y2,WHITE);
x2 = x2 + lenth;
}
y1 = y1 + lenth;
}
x1 = inital_x + 3.25 * lenth;
y1 = inital_y + 2 * lenth;
for (i = 0 ;i < 3 ;i ++ )
{
x2 = x1;
y2 = y1;
for (j = 0 ;j < 3 ;j ++ )
{
color_num = side[i][j];
setfillstyle( 1 ,color_num);
floodfill(x2,y2,WHITE);
x2 = x2 + 0.5 * lenth;
y2 = y2 - 0.5 * lenth;
}
y1 = y1 + lenth;
}
}
arrow( int inital_x, int inital_y, int lenth) /* DRAWING THE ARROW BY THE POSITION */
{
if (position <= 2 )
{
line(inital_x - 30 ,inital_y + 2 * lenth - 3 + position * lenth,inital_x - 20 ,inital_y + 2 * lenth - 3 + position * lenth);
line(inital_x - 30 ,inital_y + 2 * lenth + 3 + position * lenth,inital_x - 20 ,inital_y + 2 * lenth + 3 + position * lenth);
line(inital_x - 21 ,inital_y + 2 * lenth - 6 + position * lenth,inital_x - 15 ,inital_y + 2 * lenth + position * lenth);
line(inital_x - 21 ,inital_y + 2 * lenth + 6 + position * lenth,inital_x - 15 ,inital_y + 2 * lenth + position * lenth);
}
if (position <= 5 && position > 2 )
{
line(inital_x + 0.5 * lenth + (position - 3 ) * lenth - 3 ,inital_y + 4.5 * lenth + 30 ,inital_x + 0.5 * lenth + (position - 3 ) * lenth - 3 ,inital_y + 4.5 * lenth + 20 );
line(inital_x + 0.5 * lenth + (position - 3 ) * lenth + 3 ,inital_y + 4.5 * lenth + 30 ,inital_x + 0.5 * lenth + (position - 3 ) * lenth + 3 ,inital_y + 4.5 * lenth + 20 );
line(inital_x + 0.5 * lenth + (position - 3 ) * lenth - 6 ,inital_y + 4.5 * lenth + 21 ,inital_x + 0.5 * lenth + (position - 3 ) * lenth,inital_y + 4.5 * lenth + 15 );
line(inital_x + 0.5 * lenth + (position - 3 ) * lenth + 6 ,inital_y + 4.5 * lenth + 21 ,inital_x + 0.5 * lenth + (position - 3 ) * lenth,inital_y + 4.5 * lenth + 15 );
}
if (position > 5 )
{
line(inital_x + 3.25 * lenth + (position - 6 ) * lenth * 0.5 - 3 + 5 ,inital_y + 4.5 * lenth + 30 - (position - 5 ) * 0.5 * lenth + 20 ,inital_x + 3.25 * lenth + (position - 6 ) * 0.5 * lenth - 3 + 5 ,inital_y + 4.5 * lenth + 20 - (position - 5 ) * 0.5 * lenth + 20 );
line(inital_x + 3.25 * lenth + (position - 6 ) * lenth * 0.5 + 3 + 5 ,inital_y + 4.5 * lenth + 30 - (position - 5 ) * 0.5 * lenth + 20 ,inital_x + 3.25 * lenth + (position - 6 ) * 0.5 * lenth + 3 + 5 ,inital_y + 4.5 * lenth + 20 - (position - 5 ) * 0.5 * lenth + 20 );
line(inital_x + 3.25 * lenth + (position - 6 ) * lenth * 0.5 - 6 + 5 ,inital_y + 4.5 * lenth + 21 - (position - 5 ) * 0.5 * lenth + 20 ,inital_x + 3.25 * lenth + (position - 6 ) * 0.5 * lenth + 5 ,inital_y + 4.5 * lenth + 15 - (position - 5 ) * 0.5 * lenth + 20 );
line(inital_x + 3.25 * lenth + (position - 6 ) * lenth * 0.5 + 6 + 5 ,inital_y + 4.5 * lenth + 21 - (position - 5 ) * 0.5 * lenth + 20 ,inital_x + 3.25 * lenth + (position - 6 ) * 0.5 * lenth + 5 ,inital_y + 4.5 * lenth + 15 - (position - 5 ) * 0.5 * lenth + 20 );
}
}
copy ( int * p, int * q)
{
int i,j;
for (i = 0 ;i < 3 ;i ++ )
{
for (j = 0 ;j < 3 ;j ++ )
{
* q =* p;
p ++ ;
q ++ ;
}
}
}
change1( int * p, int * q) /* CONVERT TWO ARRAY */
{
int i,ling;
p = p + sign;
q = q + sign;
if (temp[ 0 ] == 0 )
{
for (i = 0 ;i < 3 ;i ++ )
{
temp[i] =* p;
p = p + 3 ;
}
p = p - 9 ;
}
for (i = 0 ;i < 3 ;i ++ )
{
ling =* q;
* q = temp[i];
temp[i] = ling;
p = p + 3 ;
q = q + 3 ;
}
}
change2( int * p, int x) /* CHANGE THE ARRAY BY REVERSE-CLOCKWISE */
{
int i,j,k;
for (k = 0 ;k < x;k ++ )
{
for (i = 0 ;i < 3 ;i ++ )
{
for (j = 2 ;j >= 0 ;j -- )
{
new [j][i] =* p;
p = p + 1 ;
}
}
p = p - 9 ;
for (i = 0 ;i < 3 ;i ++ )
{
for (j = 0 ;j < 3 ;j ++ )
{
* p = new [i][j];
p ++ ;
}
}
p = p - 9 ;
}
}
#include < stdio.h >
#include < stdlib.h >
#include < graphics.h >
int a[ 3 ][ 3 ] = { 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 }; /* INITIALIZE SIX PLANS */
int b[ 3 ][ 3 ] = { 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 };
int c[ 3 ][ 3 ] = { 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 };
int d[ 3 ][ 3 ] = { 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 };
int e[ 3 ][ 3 ] = { 5 , 5 , 5 , 5 , 5 , 5 , 5 , 5 , 5 };
int f[ 3 ][ 3 ] = { 7 , 7 , 7 , 7 , 7 , 7 , 7 , 7 , 7 };
int top[ 3 ][ 3 ],front[ 3 ][ 3 ],side[ 3 ][ 3 ];
int position = 0 ,temp[ 3 ] = { 0 , 0 , 0 }, new [ 3 ][ 3 ]; /* POSITION ASSIGN THE ARROW POSITION */
int sign;
main()
{
int l = 60 ,x = 50 ,y = 50 ,key,count,input = 0 ,errorcode; /* L MEANS THE LENTH OF THE SQUARE,X MEANS THE INITAIL POSITION OF X,Y MEANS THE INITIAL POSITION OF Y */
int a1[ 3 ][ 3 ] = { 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 }; /* INITIALIZE SIX PLANS FOR BACKUP */
int b1[ 3 ][ 3 ] = { 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 };
int c1[ 3 ][ 3 ] = { 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 };
int d1[ 3 ][ 3 ] = { 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 };
int e1[ 3 ][ 3 ] = { 5 , 5 , 5 , 5 , 5 , 5 , 5 , 5 , 5 };
int f1[ 3 ][ 3 ] = { 7 , 7 , 7 , 7 , 7 , 7 , 7 , 7 , 7 };
int graphdriver = VGA,graphmode = VGAHI;
initgraph( & graphdriver, & graphmode, "" );
errorcode = graphresult();
if (errorcode != grOk) /* MEET ERROR */
{ /* SHOW THE ERROE */
printf( " Graphics error: %s\n " , grapherrormsg(errorcode));
printf( " Press any key to exit: " );
getch();
exit( 1 );
}
drawing(x,y,l); /* DRAWING THE BIG SQUARE */
drawing(x + 400 ,y,l / 2 ); /* DRAWING THE SMALL SQUARE */
do
{
sign = position % 3 ; /* COPY DATA TO SHOW */
copy ( & a, & top);
copy ( & b, & front);
copy ( & c, & side);
color(x,y,l); /* SHOWING THE BIG SQUARE */
copy ( & e, & top);
change2( & top, 1 );
copy ( & f, & front);
change2( & front, 2 );
copy ( & d, & side);
color(x + 400 ,y,l / 2 ); /* SHOWING THE SMALL SQUARE */
setcolor( 14 );
arrow(x,y,l);
key = bioskey( 0 ); /* READ KEYBORD */
switch (key)
{
case 283 :printf( " Esc " ); /* IF INPUT_KEY="ESC" TO EXIT THE PROGRAM */
goto end;
case 20480 :setcolor( 0 ); /* IF INPUT_KEY="DOWN" TO CHANGE THE ARROW */
arrow(x,y,l);
if (position == 8 )
position = 0 ;
else
position = position + 1 ;
break ; /* IF INPUT_KEY="UP" TO CHANGE THE ARROW */
case 18432 :setcolor( 0 );
arrow(x,y,l);
if (position == 0 )
position = 8 ;
else
position = position - 1 ;
break ;
case 19712 :input = 1 ; /* IF INPUT_KEY="RIGHT" TO MOVE FORWARD */
break ;
case 19200 :input = 3 ; /* IF INPUT_KEY="LEFT" TO MOVE REWARD */
break ;
case 7181 : setcolor( 0 ); /* IF INPUT_KEY="ENTER" TO RELOAD */
arrow(x,y,l);
copy( & a1, & a);
copy( & b1, & b);
copy( & c1, & c);
copy( & d1, & d);
copy( & e1, & e);
copy( & f1, & f);
position = 0 ;
break ;
case 14624 :setcolor( 0 ); /* IF INPUT_KEY="SPACE" TO RANDOM MOVE */
arrow(x,y,l);
randomize();
position = random( 9 );
input = 1 ;
break ;
}
if (input != 0 ) /* USE POSITION TO JUDGE AND CHANGE DATA */
{ /* IF INPUT=0,CHANGE CLOCKWISE,IF INPUT=3,CHANGE REVERSE-CLOCKWISE */
for (count = 0 ;count < input;count ++ )
{
if (position / 3 == 0 ) /* IF NEED TO CHANGE TOP */
{
change2( & b, 1 );
change2( & c, 1 );
change2( & d, 3 );
change2( & f, 1 );
change1( & b, & c);
change1( & c, & d);
change1( & d, & f);
change1( & f, & b);
change2( & b, 3 );
change2( & c, 3 );
change2( & d, 1 );
change2( & f, 3 );
temp[ 0 ] = 0 ;temp[ 1 ] = 0 ;temp[ 2 ] = 0 ;
if (position % 3 == 0 )
change2( & a, 1 );
if (position % 3 == 2 )
change2( & e, 1 );
}
if (position / 3 == 1 ) /* IF NEED TO CHANGE FRONT */
{
change1( & a, & b);
change1( & b, & e);
change1( & e, & d);
change1( & d, & a);
temp[ 0 ] = 0 ;temp[ 1 ] = 0 ;temp[ 2 ] = 0 ;
if (position % 3 == 0 )
change2( & f, 1 );
if (position % 3 == 2 )
change2( & c, 1 );
}
if (position / 3 == 2 ) /* IF NEED TO CHANGE SIDE */
{
change2( & a, 3 );
change2( & e, 1 );
change2( & f, 2 );
change1( & a, & c);
change1( & c, & e);
change1( & e, & f);
change1( & f, & a);
change2( & a, 1 );
change2( & e, 3 );
change2( & f, 2 );
temp[ 0 ] = 0 ;temp[ 1 ] = 0 ;temp[ 2 ] = 0 ;
if (position % 3 == 0 )
change2( & b, 1 );
if (position % 3 == 2 )
change2( & d, 1 );
}
}
input = 0 ;
}
}
while ( 1 );
end:
clearviewport(); /* CLEAR THE SCREEN */
}
drawing( int inital_x, int inital_y, int lenth) /* DRAWING THE STRUCTURE OF THE PICTURE */
{
setlinestyle( 0 , 0 , 3 );
line(inital_x + 1.5 * lenth,inital_y + 0 ,inital_x + 4.5 * lenth,inital_y + 0 );
line(inital_x + 1.0 * lenth,inital_y + 0.5 * lenth,inital_x + 4.0 * lenth,inital_y + 0.5 * lenth);
line(inital_x + 0.5 * lenth,inital_y + 1 * lenth,inital_x + 3.5 * lenth,inital_y + 1 * lenth);
line(inital_x + 0 ,inital_y + 1.5 * lenth,inital_x + 3 * lenth,inital_y + 1.5 * lenth);
line(inital_x + 0 ,inital_y + 2.5 * lenth,inital_x + 3 * lenth,inital_y + 2.5 * lenth);
line(inital_x + 0 ,inital_y + 3.5 * lenth,inital_x + 3 * lenth,inital_y + 3.5 * lenth);
line(inital_x + 0 ,inital_y + 4.5 * lenth,inital_x + 3 * lenth,inital_y + 4.5 * lenth);
line(inital_x + 0 ,inital_y + 1.5 * lenth,inital_x + 0 ,inital_y + 4.5 * lenth);
line(inital_x + 1.0 * lenth,inital_y + 1.5 * lenth,inital_x + 1.0 * lenth,inital_y + 4.5 * lenth);
line(inital_x + 2.0 * lenth,inital_y + 1.5 * lenth,inital_x + 2.0 * lenth,inital_y + 4.5 * lenth);
line(inital_x + 3.0 * lenth,inital_y + 1.5 * lenth,inital_x + 3.0 * lenth,inital_y + 4.5 * lenth);
line(inital_x + 3.5 * lenth,inital_y + 1.0 * lenth,inital_x + 3.5 * lenth,inital_y + 4.0 * lenth);
line(inital_x + 4.0 * lenth,inital_y + 0.5 * lenth,inital_x + 4.0 * lenth,inital_y + 3.5 * lenth);
line(inital_x + 4.5 * lenth,inital_y + 0 ,inital_x + 4.5 * lenth,inital_y + 3.0 * lenth);
line(inital_x + 1.5 * lenth,inital_y + 0 ,inital_x + 0 ,inital_y + 1.5 * lenth);
line(inital_x + 2.5 * lenth,inital_y + 0 ,inital_x + 1.0 * lenth,inital_y + 1.5 * lenth);
line(inital_x + 3.5 * lenth,inital_y + 0 ,inital_x + 2.0 * lenth,inital_y + 1.5 * lenth);
line(inital_x + 4.5 * lenth,inital_y + 0 ,inital_x + 3.0 * lenth,inital_y + 1.5 * lenth);
line(inital_x + 4.5 * lenth,inital_y + 1.0 * lenth,inital_x + 3.0 * lenth,inital_y + 2.5 * lenth);
line(inital_x + 4.5 * lenth,inital_y + 2.0 * lenth,inital_x + 3.0 * lenth,inital_y + 3.5 * lenth);
line(inital_x + 4.5 * lenth,inital_y + 3.0 * lenth,inital_x + 3.0 * lenth,inital_y + 4.5 * lenth);
}
color( int inital_x, int inital_y, int lenth) /* FILL COLOR BY THE DATA */
{
int i,j;
int color_num;
int x1 = inital_x + 1.5 * lenth;
int y1 = inital_y + 0.25 * lenth;
int x2,y2;
for (i = 0 ;i < 3 ;i ++ )
{
x2 = x1;
y2 = y1;
for (j = 0 ;j < 3 ;j ++ )
{
color_num = top[i][j];
setfillstyle( 1 ,color_num);
floodfill(x2,y2,WHITE);
x2 = x2 + lenth;
}
x1 = x1 - 0.5 * lenth;
y1 = y1 + 0.5 * lenth;
}
x1 = inital_x + 0.5 * lenth;
y1 = inital_y + 2 * lenth;
for (i = 0 ;i < 3 ;i ++ )
{
x2 = x1;
y2 = y1;
for (j = 0 ;j < 3 ;j ++ )
{
color_num = front[i][j];
setfillstyle( 1 ,color_num);
floodfill(x2,y2,WHITE);
x2 = x2 + lenth;
}
y1 = y1 + lenth;
}
x1 = inital_x + 3.25 * lenth;
y1 = inital_y + 2 * lenth;
for (i = 0 ;i < 3 ;i ++ )
{
x2 = x1;
y2 = y1;
for (j = 0 ;j < 3 ;j ++ )
{
color_num = side[i][j];
setfillstyle( 1 ,color_num);
floodfill(x2,y2,WHITE);
x2 = x2 + 0.5 * lenth;
y2 = y2 - 0.5 * lenth;
}
y1 = y1 + lenth;
}
}
arrow( int inital_x, int inital_y, int lenth) /* DRAWING THE ARROW BY THE POSITION */
{
if (position <= 2 )
{
line(inital_x - 30 ,inital_y + 2 * lenth - 3 + position * lenth,inital_x - 20 ,inital_y + 2 * lenth - 3 + position * lenth);
line(inital_x - 30 ,inital_y + 2 * lenth + 3 + position * lenth,inital_x - 20 ,inital_y + 2 * lenth + 3 + position * lenth);
line(inital_x - 21 ,inital_y + 2 * lenth - 6 + position * lenth,inital_x - 15 ,inital_y + 2 * lenth + position * lenth);
line(inital_x - 21 ,inital_y + 2 * lenth + 6 + position * lenth,inital_x - 15 ,inital_y + 2 * lenth + position * lenth);
}
if (position <= 5 && position > 2 )
{
line(inital_x + 0.5 * lenth + (position - 3 ) * lenth - 3 ,inital_y + 4.5 * lenth + 30 ,inital_x + 0.5 * lenth + (position - 3 ) * lenth - 3 ,inital_y + 4.5 * lenth + 20 );
line(inital_x + 0.5 * lenth + (position - 3 ) * lenth + 3 ,inital_y + 4.5 * lenth + 30 ,inital_x + 0.5 * lenth + (position - 3 ) * lenth + 3 ,inital_y + 4.5 * lenth + 20 );
line(inital_x + 0.5 * lenth + (position - 3 ) * lenth - 6 ,inital_y + 4.5 * lenth + 21 ,inital_x + 0.5 * lenth + (position - 3 ) * lenth,inital_y + 4.5 * lenth + 15 );
line(inital_x + 0.5 * lenth + (position - 3 ) * lenth + 6 ,inital_y + 4.5 * lenth + 21 ,inital_x + 0.5 * lenth + (position - 3 ) * lenth,inital_y + 4.5 * lenth + 15 );
}
if (position > 5 )
{
line(inital_x + 3.25 * lenth + (position - 6 ) * lenth * 0.5 - 3 + 5 ,inital_y + 4.5 * lenth + 30 - (position - 5 ) * 0.5 * lenth + 20 ,inital_x + 3.25 * lenth + (position - 6 ) * 0.5 * lenth - 3 + 5 ,inital_y + 4.5 * lenth + 20 - (position - 5 ) * 0.5 * lenth + 20 );
line(inital_x + 3.25 * lenth + (position - 6 ) * lenth * 0.5 + 3 + 5 ,inital_y + 4.5 * lenth + 30 - (position - 5 ) * 0.5 * lenth + 20 ,inital_x + 3.25 * lenth + (position - 6 ) * 0.5 * lenth + 3 + 5 ,inital_y + 4.5 * lenth + 20 - (position - 5 ) * 0.5 * lenth + 20 );
line(inital_x + 3.25 * lenth + (position - 6 ) * lenth * 0.5 - 6 + 5 ,inital_y + 4.5 * lenth + 21 - (position - 5 ) * 0.5 * lenth + 20 ,inital_x + 3.25 * lenth + (position - 6 ) * 0.5 * lenth + 5 ,inital_y + 4.5 * lenth + 15 - (position - 5 ) * 0.5 * lenth + 20 );
line(inital_x + 3.25 * lenth + (position - 6 ) * lenth * 0.5 + 6 + 5 ,inital_y + 4.5 * lenth + 21 - (position - 5 ) * 0.5 * lenth + 20 ,inital_x + 3.25 * lenth + (position - 6 ) * 0.5 * lenth + 5 ,inital_y + 4.5 * lenth + 15 - (position - 5 ) * 0.5 * lenth + 20 );
}
}
copy ( int * p, int * q)
{
int i,j;
for (i = 0 ;i < 3 ;i ++ )
{
for (j = 0 ;j < 3 ;j ++ )
{
* q =* p;
p ++ ;
q ++ ;
}
}
}
change1( int * p, int * q) /* CONVERT TWO ARRAY */
{
int i,ling;
p = p + sign;
q = q + sign;
if (temp[ 0 ] == 0 )
{
for (i = 0 ;i < 3 ;i ++ )
{
temp[i] =* p;
p = p + 3 ;
}
p = p - 9 ;
}
for (i = 0 ;i < 3 ;i ++ )
{
ling =* q;
* q = temp[i];
temp[i] = ling;
p = p + 3 ;
q = q + 3 ;
}
}
change2( int * p, int x) /* CHANGE THE ARRAY BY REVERSE-CLOCKWISE */
{
int i,j,k;
for (k = 0 ;k < x;k ++ )
{
for (i = 0 ;i < 3 ;i ++ )
{
for (j = 2 ;j >= 0 ;j -- )
{
new [j][i] =* p;
p = p + 1 ;
}
}
p = p - 9 ;
for (i = 0 ;i < 3 ;i ++ )
{
for (j = 0 ;j < 3 ;j ++ )
{
* p = new [i][j];
p ++ ;
}
}
p = p - 9 ;
}
}