C语言写的游戏:"能解题者,你就是李白诗仙!"该如何解决

C语言写的游戏:"能解题者,你就是李白诗仙!"
整本C语言二级教材我才看了前4章,C语言不过如此.....
  我经常问自己:"我是天才吗?"
  "我是天才!".....
  本文章献给广大的C语言初学者,劳动者,开发者...
  本程序用BC++ Builder,C语言编写。源工程和执行文件下载地址:
  http://cid-c3a069dbfb1fcc3d.skydrive.live.com/self.aspx/.Public/BC++%20Game.zip live空间共享文件夹
  http://download.****.net/source/1739966 ****下载,需要2积分
C/C++ code

char Tab=18;
void Switchby(char a,char order[][5]);
void Prpoem(char poem[][5],char order[]);
//游戏由BC++,C语言编写,普通函数不需要加头文件。建议你们还是加上常用的头文件,可以保证某些函数正常使用。
void main(){
void RandomAnyby(char poem[][5],char order[]);
char poem[20][5]={"|床","|前","|明","|月","|光","|疑","|是","|地","|上","|霜",\
                  "|\xc5\x65","|\xee\x5e","|\xcd\xfb","|\xc3\xf7","|\xd4\xc2",\
                  "|\xb5\xcd","|\xee\x5e","|\xcb\xbc","|  ","|\xe0\x6c"};
char order[20]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19};
char by;
#define T "\t\t"
#define H "___________"
    system("color e");
    Prpoem(poem,order);
    getch();
    RandomAnyby(poem,order);
    while(by=getch()){
     if(by=='w'||by=='s'||by=='a'||by=='d')Switchby(by,order);
     Prpoem(poem,order);
    }
}
void Prpoem(char poem[][5],char order[]){
//gotoxy()函数是界面输出与流畅的关键,千万不要使用clrscr(),"cls",否则本游戏宣布无望。
int i;
    gotoxy(1,1);
    for(i=0;i<20;i++){
     if(i==0)printf("\n"T T T"\xec\x6f\n"T H T"\xd2\xb9\n"T);
     if(i==5||i==10||i==15)printf("\n"T H"\n"T);
     printf("%s",poem[order[i]]);
     if(i==4||i==14)printf("|,");else if(i==9||i==19)printf("|.");
     if(i==4)printf(T"\xd4\x8a");
    }
}
void Switchby(char a,char order[][5]){
int re,i,agen;
    switch (a){
     case 'w':
      re=Tab%5,agen=order[0][re];
      for(i=0;i<3;i++)order[i][re]=order[i+1][re];
      order[3][re]=agen;Tab=Tab-5<0?15+re:Tab-5;break;
     case 's':
      re=Tab%5,agen=order[3][re];
      for(i=3;i>0;i--)
       order[i][re]=order[i-1][re];
      order[0][re]=agen;Tab=Tab+5>19?re:Tab+5;break;
     case 'a':
      re=Tab/5;agen=order[re][0];
      for(i=0;i<4;i++)order[re][i]=order[re][i+1];
      order[re][4]=agen;Tab=Tab-1<re*5?re*5+4:Tab-1;break;
     case 'd':
      re=Tab/5;agen=order[re][4];
      for(i=4;i>0;i--)order[re][i]=order[re][i-1];
      order[re][0]=agen;Tab=Tab+1>re*5+4?re*5:Tab+1;break;
     }printf("\t\t%02d",Tab);
}
void RandomAnyby(char poem[][5],char order[]){
//n,难度,=1最简单;之后就要花些脑子咯。15如果你解不了,放心,运气好的时候很容易通关。本人靠运气以过20。
char n=20,by,r,i;            
    srand(time(0));
    while(n){
    r=(1+rand()%7);          
    if(11*r%4==0) by='w';
    if(11*r%4==1) by='a';
    if(11*r%4==2) by='d';
    if(11*r%4==3) by='s';
    for(i=0;i<r;i++)
     Switchby(by,order),Prpoem(poem,order);
    n--;}
}/*代码合理运用了一维,二维数组。写这样的游戏程序,定以CPU使用为最高标准,否则再简单的代码和再聪明的头脑,也是拖累速度。
如果你用VC的请你自行翻译,或者请你将源码贴上来。据我目前了解,VC下要处理两个问题:
    1.BC可以使用gotoxy()函数,这个函数只不过移动光标而已。VC不能,但是有其它方法。
    2.BC,VC下子过程如何用二维来使用和访问一维数组?BC中直接使用指针就可以了,VC下可能要传递N个指针*/



  10年前,我在一所学校的地摊上买了一本....
  .....
  本文来自我的博客 [url]http://hi.baidu.com/moji4[/url]
  从静悄悄的学校里走出来的我,很难再相信......
  更详细的代码,著解,背景,思路,原理..请到我的博客去看。
  希望明年二级等考可以使用BC++ Builder:

------解决方案--------------------
楼主努力!
------解决方案--------------------
呃 gotoxy ...
------解决方案--------------------
LZ继续加油。。。。
------解决方案--------------------