📄 c-box.c
字号:
DRAWMISSION(ghose[p.x-a.x][p.y-a.y],p.y-a.y,p.x-a.x);
ghose[p.x][p.y]=3;
DRAWMISSION(ghose[p.x][p.y],p.y,p.x);
ghose[p.x+a.x][p.y+a.y]=5;
DRAWMISSION(ghose[p.x+a.x][p.y+a.y],p.y+a.y,p.x+a.x);
}
if(ghose[p.x-a.x][p.y-a.y]==3&&ghose[p.x][p.y]==5&&ghose[p.x+a.x][a.y+p.y]==4)
{ghose[p.x-a.x][p.y-a.y]=ghose[p.x][p.y]=ghose[p.x+a.x][p.y+a.y]=0;
DRAWMISSION(ghose[p.x][p.y],p.y,p.x);
DRAWMISSION(ghose[p.x-a.x][p.y-a.y],p.y-a.y,p.x-a.x);
DRAWMISSION(ghose[p.x+a.x][p.y+a.y],p.y+a.y,p.x+a.x);
ghose[p.x-a.x][p.y-a.y]=0;
DRAWMISSION(ghose[p.x-a.x][p.y-a.y],p.y-a.y,p.x-a.x);
ghose[p.x][p.y]=6;
DRAWMISSION(ghose[p.x][p.y],p.y,p.x);
ghose[p.x+a.x][p.y+a.y]=5;
DRAWMISSION(ghose[p.x+a.x][p.y+a.y],p.y+a.y,p.x+a.x);
}
if(ghose[p.x-a.x][p.y-a.y]==6&&ghose[p.x][p.y]==2&&ghose[p.x+a.x][a.y+p.y]==0)
{ghose[p.x-a.x][p.y-a.y]=ghose[p.x][p.y]=ghose[p.x+a.x][p.y+a.y]=0;
DRAWMISSION(ghose[p.x][p.y],p.y,p.x);
DRAWMISSION(ghose[p.x-a.x][p.y-a.y],p.y-a.y,p.x-a.x);
DRAWMISSION(ghose[p.x+a.x][p.y+a.y],p.y+a.y,p.x+a.x);
ghose[p.x-a.x][p.y-a.y]=4;
DRAWMISSION(ghose[p.x-a.x][p.y-a.y],p.y-a.y,p.x-a.x);
ghose[p.x][p.y]=3;
DRAWMISSION(ghose[p.x][p.y],p.y,p.x);
ghose[p.x+a.x][p.y+a.y]=2;
DRAWMISSION(ghose[p.x+a.x][p.y+a.y],p.y+a.y,p.x+a.x);
}
if(ghose[p.x-a.x][p.y-a.y]==6&&ghose[p.x][p.y]==5&&ghose[p.x+a.x][a.y+p.y]==0)
{ghose[p.x-a.x][p.y-a.y]=ghose[p.x][p.y]=ghose[p.x+a.x][p.y+a.y]=0;
DRAWMISSION(ghose[p.x][p.y],p.y,p.x);
DRAWMISSION(ghose[p.x-a.x][p.y-a.y],p.y-a.y,p.x-a.x);
DRAWMISSION(ghose[p.x+a.x][p.y+a.y],p.y+a.y,p.x+a.x);
ghose[p.x-a.x][p.y-a.y]=4;
DRAWMISSION(ghose[p.x-a.x][p.y-a.y],p.y-a.y,p.x-a.x);
ghose[p.x][p.y]=6;
DRAWMISSION(ghose[p.x][p.y],p.y,p.x);
ghose[p.x+a.x][p.y+a.y]=2;
DRAWMISSION(ghose[p.x+a.x][p.y+a.y],p.y+a.y,p.x+a.x);
}
if(ghose[p.x-a.x][p.y-a.y]==6&&ghose[p.x][p.y]==2&&ghose[p.x+a.x][a.y+p.y]==4)
{ghose[p.x-a.x][p.y-a.y]=ghose[p.x][p.y]=ghose[p.x+a.x][p.y+a.y]=0;
DRAWMISSION(ghose[p.x][p.y],p.y,p.x);
DRAWMISSION(ghose[p.x-a.x][p.y-a.y],p.y-a.y,p.x-a.x);
DRAWMISSION(ghose[p.x+a.x][p.y+a.y],p.y+a.y,p.x+a.x);
ghose[p.x-a.x][p.y-a.y]=4;
DRAWMISSION(ghose[p.x-a.x][p.y-a.y],p.y-a.y,p.x-a.x);
ghose[p.x][p.y]=3;
DRAWMISSION(ghose[p.x][p.y],p.y,p.x);
ghose[p.x+a.x][p.y+a.y]=5;
DRAWMISSION(ghose[p.x+a.x][p.y+a.y],p.y+a.y,p.x+a.x);
}
if(ghose[p.x-a.x][p.y-a.y]==6&&ghose[p.x][p.y]==5&&ghose[p.x+a.x][p.y+a.y]==4)
{ghose[p.x-a.x][p.y-a.y]=ghose[p.x][p.y]=ghose[p.x+a.x][p.y+a.y]=0;
DRAWMISSION(ghose[p.x][p.y],p.y,p.x);
DRAWMISSION(ghose[p.x-a.x][p.y-a.y],p.y-a.y,p.x-a.x);
DRAWMISSION(ghose[p.x+a.x][p.y+a.y],p.y+a.y,p.x+a.x);
ghose[p.x-a.x][p.y-a.y]=4;
DRAWMISSION(ghose[p.x-a.x][p.y-a.y],p.y-a.y,p.x-a.x);
ghose[p.x][p.y]=6;
DRAWMISSION(ghose[p.x][p.y],p.y,p.x);
ghose[p.x+a.x][p.y+a.y]=5;
DRAWMISSION(ghose[p.x+a.x][p.y+a.y],p.y+a.y,p.x+a.x);
}
p.x=p.x+a.x; p.y=p.y+a.y;}}
DRAWEND() /*画结束时的界面*/
{ setbkcolor(BLACK);
cleardevice();
setcolor(RED);
settextstyle(1,0,8);
outtextxy(240,200,"GOODBYE !");
outtextxy(220,240,"HAVE A GOOD TIME!");
bioskey(0);
exit(0);}
ABOVEALL() /*画开始时的欢迎界面*/
{ setcolor(RED);
settextstyle(1,0,5);
outtextxy(180,220,"WELCOME TO THE BOX WORLD!");
bioskey(0);
}
void Init() /*驱动显卡*/
{
int gd=VGA,gm=VGAHI;
initgraph(&gd,&gm,"c:\\tc");
}
DRAWBACK(int i,int j) /*画空地*/
{ setcolor(GREEN);
setfillstyle(1,GREEN);
rectangle(STARTX+i*36,STARTY+j*36,STARTX+(i+1)*36,STARTY+(j+1)*36);
floodfill(STARTX+i*36+18,STARTY+j*36+18,GREEN);}
DRAWMAN(int i,int j) /*画空地上的人*/
{ setcolor(RED);
setfillstyle(1,WHITE);
circle(STARTX+18+i*36,STARTY+18+j*36,18);
floodfill(STARTX+18+i*36,STARTY+18+j*36,RED);
arc(STARTX+18+i*36-6,STARTY+18+j*36-4,20,160,4);
arc(STARTX+18+i*36+6,STARTY+18+j*36-4,20,160,4);
arc(STARTX+18+i*36,STARTY+18+j*36-4,220,320,14);
}
DRAWBOX(int i,int j) /*画空地上的箱子*/
{ setcolor(YELLOW);
setfillstyle(1,BLUE);
rectangle(STARTX+i*36,STARTY+j*36,STARTX+i*36+35,STARTY+j*36+35);
floodfill(STARTX+i*36+18,STARTY+j*36+18,YELLOW);
}
DRAWFLAG(int i,int j) /*画目的地--旗子*/
{setcolor(YELLOW);
arc(STARTX+i*36+12,STARTY+j*36-18,240,300,24);
arc(STARTX+i*36+12,STARTY+j*36-18+18,240,300,24);
arc(STARTX+i*36+12+18,STARTY+j*36-18+30,60,120,12);
arc(STARTX+i*36+12+18,STARTY+j*36-18+48,60,120,12);
line(STARTX+i*36+12-12,STARTY+j*36-18+22,STARTX+i*36+12-12,STARTY+j*36-18+53);
line(STARTX+i*36+12+23,STARTY+j*36-18+20,STARTX+i*36+12+23,STARTY+j*36-18+38);
}
DRAWMAN1(int i,int j) /*画到达目的地后的人*/
{ setcolor(RED);
setfillstyle(1,YELLOW);
circle(STARTX+18+i*36,STARTY+18+j*36,18);
floodfill(STARTX+18+i*36,STARTY+18+j*36,RED);
arc(STARTX+18+i*36-6,STARTY+18+j*36-4,20,160,4);
arc(STARTX+18+i*36+6,STARTY+18+j*36-4,20,160,4);
arc(STARTX+18+i*36,STARTY+18+j*36-4,220,320,14); }
DRAWBOX1(int i,int j) /*画到达目的地后的箱子*/
{ setcolor(YELLOW);
setfillstyle(1,YELLOW);
bar(STARTX+i*36,STARTY+j*36,STARTX+i*36+36,STARTY+j*36+36);
}
DRAWWALL(int i,int j) /*画障碍物--墙壁*/
{setcolor(RED);
setfillstyle(1,RED);
bar(STARTX+i*36,STARTY+j*36,STARTX+i*36+36,STARTY+j*36+36);}
DRAWMAN2(int i,int j) /* 画游戏界面时旁边介绍时用的人(在空地)*/
{ setcolor(RED);
setfillstyle(1,WHITE);
circle(i,j,18);
floodfill(i+1,j+1,RED);
arc(i-6,j-4,20,160,4);
arc(i+6,j-4,20,160,4);
arc(i,j-4,220,320,14);
}
DRAWBOX2(int i,int j) /* 画游戏界面时旁边介绍时用的箱子(在空地)*/
{ setcolor(YELLOW);
setfillstyle(1,BLUE);
rectangle(i,j,i+36,j+36);
floodfill(i+1,j+1,YELLOW);
}
DRAWBOX3(int i,int j) /* 画游戏界面时旁边介绍时用的箱子(在目的地)*/
{setcolor(YELLOW);
setfillstyle(1,YELLOW);
rectangle(i,j,i+36,j+36);
floodfill(i+1,j+1,YELLOW);
}
DRAWFLAG1(int i,int j) /* 画游戏界面时旁边介绍时用的目的地--旗子*/
{setcolor(YELLOW);
arc(i,j,240,300,24);
arc(i,j+18,240,300,24);
arc(i+18,j+30,60,120,12);
arc(i+18,j+48,60,120,12);
line(i-12,j+22,i-12,j+53);
line(i+24,j+20,i+24,j+38);
}
DRAWMAN3(int i,int j) /* 画游戏界面时旁边介绍时用的人(在目的地)*/
{ setcolor(RED);
setfillstyle(1,YELLOW);
circle(i,j,18);
floodfill(i+1,j+1,RED);
arc(i-6,j-4,20,160,4);
arc(i+6,j-4,20,160,4);
arc(i,j-4,220,320,14);}
DRAWWALL1(int i,int j) /* 画游戏界面时旁边介绍时用的障碍物--墙壁*/
{setcolor(RED);
setfillstyle(1,RED);
bar(i,j,i+36,j+36);
}
MISSION1() /*画第一关的游戏界面*/
{int m,n;
for(m=0;m<10;m++)
for(n=0;n<10;n++)
ghose[m][n]=0;
for(m=0;m<10;m++)
ghose[0][m]=ghose[9][m]=ghose[m][0]=ghose[m][9]=1; /*构造边框,边框值为1*/
for(m=1;m<3;m++) /*构造障碍物,值为1*/
ghose[m][5]=1;
for(m=4;m<7;m++)
ghose[m][1]=1;
for(m=4,n=7;m<7&&n>4;m++,n--)
ghose[m][n]=1;
ghose[6][8]=ghose[8][5]=ghose[5][3]=1;
ghose[8][1]=2; /*构造人物在的地方,值为2*/
for(m=2;m<4;m++)
ghose[m][2]=ghose[3][m]=3; /*构造箱子放的地方,值为3*/
ghose[1][8]=ghose[6][6]=ghose[8][8]=4; /*构造目的地,值为4*/
p.x=8; p.y=1; /*设定玩家起点*/
BOXNUM=3; /*设定这关的箱子数*/
}
MISSION2() /*画第二关的游戏界面*/
{int m,n;
for(m=0;m<10;m++)
for(n=0;n<10;n++)
ghose[m][n]=0;
for(m=0;m<10;m++)
ghose[0][m]=ghose[9][m]=ghose[m][0]=ghose[m][9]=1;
for(m=2;m<4;m++)
ghose[m][1]=ghose[3][m-1]=1;
for(m=3,n=6;m>1&&n<8;m--,n++)
ghose[m][n]=1;
for(m=4;m<7;m++)
ghose[6][m]=ghose[m+1][5]=1;
ghose[1][4]=ghose[2][8]=1;
ghose[6][8]=2;
for(m=3;m<5;m++)
ghose[m][4]=ghose[4][m]=3;
ghose[4][2]=3;
ghose[2][6]=ghose[3][7]=ghose[5][6]=ghose[7][6]=4;
p.x=6; p.y=8;BOXNUM=4;
}
MISSION3() /*画第三关的游戏界面*/
{int m,n;
for(m=0;m<10;m++)
for(n=0;n<10;n++)
ghose[m][n]=0;
for(m=0;m<10;m++)
ghose[0][m]=ghose[9][m]=ghose[m][0]=ghose[m][9]=1;
for(m=2,n=5;m<4&&n<7;m++,n++)
ghose[m][n]=1;
ghose[1][3]=ghose[3][3]=ghose[4][1]=ghose[5][4]=ghose[6][7]=ghose[7][5]=ghose[8][3]=1;
ghose[4][4]=2;
for(m=6;m<8;m++)
ghose[m][2]=ghose[m][4]=3;
ghose[7][3]=3;
for(m=6;m<9;m++)
ghose[1][m]=4;
ghose[3][1]=ghose[8][7]=4;
p.x=4; p.y=4; BOXNUM=5; }
DRAWMISSION(int n,int i,int j) /*依据ghose[ i ][j]所对应的值,在相应位置画出图像*/
{
switch(n)
{
case 0:DRAWBACK(i,j);break;
case 1:DRAWWALL(i,j);break;
case 2:DRAWMAN(i,j);break;
case 3:DRAWBOX(i,j);break;
case 4:DRAWFLAG(i,j);break;
case 5:DRAWMAN1(i,j);break;
case 6:DRAWBOX1(i,j);break;
}
}
CHOOSEMISSION(int n) /*根据关数去画相应的游戏界面*/
{ switch(n)
{
case 1:MISSION1();break;
case 2:MISSION2();break;
case 3:MISSION3();break;
}
}
DRAWINTRODUCTION( ) /*画游戏界面旁边的介绍*/
{ int n;
char *s[10]={"WALL","MAN","BOX","DESTINATION","MAN&&DESTINATION","BOX&&DESTINATION","P--REVERSELYMOVE","ENTER--Nextmission","ESC--Exit","R--Replay"};
settextstyle(1,0,2);
outtextxy(430,40,"INTRODUCTION");
settextstyle(0,0,1);
for(n=0;n<6;n++)
outtextxy(500,100+n*50,s[n]);
DRAWWALL1(455,82);
DRAWMAN2(473,151);
DRAWBOX2(455,182);
DRAWFLAG1(467,220);
DRAWMAN3(473,301);
DRAWBOX3(455,335);
setcolor(RED);
for(n=6;n<10;n++)
outtextxy(455,370+(n-5)*20,s[n]);
}
void main() /*主函数*/
{
Init();
setbkcolor(BLACK);
cleardevice();
ABOVEALL();
setbkcolor(BLUE);
cleardevice();
setbkcolor(BKCOLOR);
cleardevice();
GAME();
getch();
closegraph();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -