推箱子游戏的代码.docx
《推箱子游戏的代码.docx》由会员分享,可在线阅读,更多相关《推箱子游戏的代码.docx(27页珍藏版)》请在冰豆网上搜索。
推箱子游戏的代码
#include
#include
#include
#include
#include
#include
typedefstructwiner
{
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)+(y<<1)+0]=ch;
printScreen[(x*160)+(y<<1)+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;i<20;i++)
for(j=0;j<20;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(