我从网上下的一个拼图的游戏,感觉里面的控制格子移动的方式反了,当然,运行结果是对的.程序如下:
#include <stdio.h> 
#include <stdlib.h>
#include <conio.h>
int num[]={1,2,3,4,5,6,7,8,0};

main()

 char key=0;
 int pos;
 clrscr();
 randomize();
 newGame();
 while(1)
 {
  key=getch();
  if(key==0) continue;
  pos=GetTheNull();
/*************感觉下面上下左右刚好反了************/
  switch(key)
  {
   case 72:  if(pos<=5) change(pos,pos+3);  break;
   case 80:  if(pos>=3) change(pos,pos-3);  break;
   case 77:  if(pos%3!=0) change(pos,pos-1);break;
   case 75:  if(pos%3!=2) change(pos,pos+1);break;
   case 110: newGame();
  }
/************************************************/
  update();
  if(isSuccess())
  {
   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();
   newGame();
  }
  if(key==27) break;
 }                      //end of while
 clrscr();
}                       //end of main
  int newGame()
 {    
  int i,a,b;
  for(i=0;i<8;i++) num[i]=i+1;
  num[8]=0;
  for(i=0;i<300;i++)
  {
   a=random(8);
   b=(a+2)%8;
   change(a,b);
  }
  update();
 }

 update()
 {
  int i,j;
  for(i=0;i<=2;i++)
  {
   gotoxy(24,8+i*3);
   for(j=0;j<=2;j++)
   {
    if (num[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 (num[j+i*3]!=0)  printf("\263 %d  \272",num[j+i*3]);
    else                printf("      ");
   }
   gotoxy(24,10+i*3);
   for(j=0;j<=2;j++)
   {
    if (num[j+i*3]!=0)  printf("\324\315\315\315\315\274");
    else                printf("      ");
   }
   printf("\n");
  }
}

int isSuccess()
{
 int i,ret=1;
 for(i=0;i<8;i++)
 ret=ret&&(num[i]==(i+1));
 return ret;


int GetTheNull()
{
 int i;
 for(i=0;i<=8;i++)
 {
  if (num[i]==0)
  return i;

 }


change(int a,int b)
{
 int temp;
 temp=num[a];
 num[a]=num[b];
 num[b]=temp;


其中,pos是内容为0,显示为空的一格. 当按键为下的时候(键值为72),应该是空格在第二第三行才能移动,也就是说条件应该是 if(pos>=3)  ,但程序刚好相反,其它的也同样.

请问高手,这个怎么回事呀?  

                                                              谢谢