⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 c-box.c

📁 这是一款经典的小游戏
💻 C
📖 第 1 页 / 共 2 页
字号:
   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 + -