#includedos.h#includestdio.h#includectype.h#includeconio.h#includebios.h#includealloc.htypedefstructwiner{intx,y;structwiner*p;}winer;charstatus[20][20];charfar*printScreen=(charfar*)0xB8000000;voidputoutChar(inty,intx,charch,charfc,charbc);voidprintWall(intx,inty);voidprintBox(intx,inty);voidprintBoxDes(intx,inty);voidprintDestination(intx,inty);voidprintDestination1(intx,inty,winer**win,winer**pw);voidprintMan(intx,inty);voidinit();winer*initStep1();winer*initStep2();winer*initStep3();winer*initStep4();voidmoveBoxSpacetoSpace(intx,inty,chara);voidmoveBoxDestoSpace(intx,inty,chara);voidmoveBoxSpacetoDes(intx,inty,chara);voidmoveBoxDestoDes(intx,inty,chara);intjudge(intx,inty);voidmove(intx,inty,chara);voidreset(inti);voidputoutChar(inty,intx,charch,charfc,charbc){printScreen[(x*160)+(y1)+0]=ch;printScreen[(x*160)+(y1)+1]=(bc*16)+fc;}voidprintWall(intx,inty){putoutChar(y-1,x-1,219,GREEN,BLACK);status[x][y]='w';}voidprintBox(intx,inty){putoutChar(y-1,x-1,10,WHITE,BLACK);status[x][y]='b';}voidprintDestination1(intx,inty,winer**win,winer**pw){winer*qw;putoutChar(y-1,x-1,003,YELLOW,BLACK);status[x][y]='m';if(*win==NULL){*win=*pw=qw=(winer*)malloc(sizeof(winer));(*pw)-x=x;(*pw)-y=y;(*pw)-p=NULL;}else{qw=(winer*)malloc(sizeof(winer));qw-x=x;qw-y=y;(*pw)-p=qw;(*pw)=qw;qw-p=NULL;}}voidprintDestination(intx,inty){putoutChar(y-1,x-1,003,YELLOW,BLACK);status[x][y]='m';}voidprintMan(intx,inty){gotoxy(y,x);_AL=02;_CX=01;_AH=0xa;geninterrupt(0x10);}voidprintBoxDes(intx,inty){putoutChar(y-1,x-1,10,YELLOW,BLACK);status[x][y]='i';}voidinit(){inti,j;for(i=0;i20;i++)for(j=0;j20;j++)status[i][j]=0;_AL=3;_AH=0;geninterrupt(0x10);gotoxy(40,4);printf(Welcometotheboxworld!);gotoxy(40,6);printf(Youcanuseup,down,left,);gotoxy(40,8);printf(rightkeytocontrolit,or);gotoxy(40,10);printf(youcanpressEsctoquitit.);gotoxy(40,12);printf(Pressspacetoresetthegame.);gotoxy(40,14);printf(Wishyouhaveagoodtime!);gotoxy(40,16);printf(April,2007);}winer*initStep1(){intx;inty;winer*win=NULL;winer*pw;for(x=1,y=5;y=9;y++)printWall(x+4,y+10);for(y=5,x=2;x=5;x++)printWall(x+4,y+10);for(y=9,x=2;x=5;x++)printWall(x+4,y+10);for(y=1,x=3;x=8;x++)printWall(x+4,y+10);for(x=3,y=3;x=5;x++)printWall(x+4,y+10);for(x=5,y=8;x=9;x++)printWall(x+4,y+10);for(x=7,y=4;x=9;x++)printWall(x+4,y+10);for(x=9,y=5;y=7;y++)printWall(x+4,y+10);for(x=8,y=2;y=3;y++)printWall(x+4,y+10);printWall(5+4,4+10);printWall(5+4,7+10);printWall(3+4,2+10);printBox(3+4,6+10);printBox(3+4,7+10);printBox(4+4,7+10);printDestination1(4+4,2+10,&win,&pw);printDestination1(5+4,2+10,&win,&pw);printDestination1(6+4,2+10,&win,&pw);printMan(2+4,8+10);returnwin;}winer*initStep2(){intx;inty;winer*win=NULL;winer*pw;for(x=1,y=4;y=7;y++)printWall(x+4,y+10);for(x=2,y=2;y=4;y++)printWall(x+4,y+10);for(x=2,y=7;x=4;x++)printWall(x+4,y+10);for(x=4,y=1;x=8;x++)printWall(x+4,y+10);for(x=8,y=2;y=8;y++)printWall(x+4,y+10);for(x=4,y=8;x=8;x++)printWall(x+4,y+10);for(x=4,y=6;x=5;x++)printWall(x+4,y+10);for(x=3,y=2;x=4;x++)printWall(x+4,y+10);for(x=4,y=4;x=5;x++)printWall(x+4,y+10);printWall(6+4,3+10);printBox(3+4,5+10);printBox(6+4,6+10);printBox(7+4,3+10);printDestination1(5+4,7+10,&win,&pw);printDestination1(6+4,7+10,&win,&pw);printDestination1(7+4,7+10,&win,&pw);printMan(2+4,6+10);returnwin;}winer*initStep3(){intx;inty;winer*win=NULL;winer*pw;for(x=1,y=2;y=8;y++)printWall(x+4,y+10);for(x=2,y=2;x=4;x++)printWall(x+4,y+10);for(x=4,y=1;y=3;y++)printWall(x+4,y+10);for(x=5,y=1;x=8;x++)printWall(x+4,y+10);for(x=8,y=2;y=5;y++)printWall(x+4,y+10);for(x=5,y=5;x=7;x++)printWall(x+4,y+10);for(x=7,y=6;y=9;y++)printWall(x+4,y+10);for(x=3,y=9;x=6;x++)printWall(x+4,y+10);for(x=3,y=6;y=8;y++)printWall(x+4,y+10);printWall(2+4,8+10);printWall(5+4,7+10);printBox(6+4,3+10);printBox(4+4,4+10);printBox(5+4,6+10);printDestination1(2+4,5+10,&win,&pw);printDestination1(2+4,6+10,&win,&pw);printDestination1(2+4,7+10,&win,&pw);printMan(2+4,4+10);returnwin;}winer*initStep4(){intx;inty;winer*win=NULL;winer*pw;for(x=1,y=1;y=6;y++)printWall(x+4,y+10);for(x=2,y=7;y=8;y++)printWall(x+4,y+10);for(x=2,y=1;x=7;x++)printWall(x+4,y+10);for(x=7,y=2;y=4;y++)printWall(x+4,y+10);for(x=6,y=4;y=9;y++)printWall(x+4,y+10);for(x=3,y=9;x=5;x++)printWall(x+4,y+10);for(x=3,y=3;y=4;y++)printWall(x+4,y+10);printWall(3+4,8+10);printBox(3+4,5+10);printBox(4+4,4+10);printBox(4+4,6+10);printBox(5+4,5+10);printBox(5+4,3+10);printDestination1(3+4,7+10,&win,&pw);printDestination1(4+4,7+10,&win,&pw);printDestination1(5+4,7+10,&win,&pw);printDestination1(4+4,8+10,&win,&pw);printDestination1(5+4,8+10,&win,&pw);printMan(2+4,2+10);returnwin;}voidmoveBoxSpacetoSpace(intx,inty,chara){switch(a){case'u':status[x-1][y]=0;printf();printBox(x-2,y);printMan(x-1,y);status[x-2][y]='b';break;case'd':status[x+1][y]=0;printf();printBox(x+2,y);printMan(x+1,y);status[x+2][y]='b';break;case'l':status[x][y-1]=0;printf();printBox(x,y-2);printMan(x,y-1);status[x][y-2]='b';break;case'r':status[x][y+1]=0;printf();printBox(x,y+2);printMan(x,y+1);