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

📄 maingame.c

📁 一个用TC及其图形库编的3D迷宫小游戏
💻 C
字号:
#include "Conio.h"
#include "graphics.h"
#include <math.h>
#include <stdlib.h>
int n,x,y,p,q,fx;
int b[13][13][2];
void initgr(void)
{
  int gd = DETECT, gm = 0;
  registerbgidriver(EGAVGA_driver);
  initgraph(&gd, &gm, "");
}
void initmaze()
{

  int i,j,m,k,fx;
  double integer;
  for(i=1;i<=12;i++)
  {
    for(j=1;j<=12;j++)
    {
      b[i][j][1]=0;
      b[i][j][0]=0;
    }
  }
  for(i=1;i<=11;i++)
  {
    for(j=1;j<=11;j++)
    {
      loop:switch(random(4)+1)
      {
        case 1:if(b[i][j][0]==1)goto loop;
               else b[i][j][0]=1;break;
        case 2:if(b[i][j][1]==1)goto loop;
               else b[i][j][1]=1;break;
        case 3:if(b[i+1][j][0]==1)goto loop;
               else b[i+1][j][0]=1;break;
        case 4:if(b[i][j+1][1]==1)goto loop;
               else b[i][j+1][1]=1;break;
       }
     }
   }
  for(k=1;k<=12;k++)
  {
   b[k][0][0]=1;
   b[k][12][0]=1;
   b[0][k][1]=1;
   b[12][k][1]=1;
   }
  for(i=0;i<=12;i++)
  {
    for(j=0;j<=12;j++)
      {
        if(b[i][j][1]==1)line(j*20-16,i*20,j*20+4,i*20);
        if(b[i][j][0]==1)line(j*20+4,i*20-20,j*20+4,i*20);
       }
   }


}

void wall(int n)
  {
  switch(n)
    {
      case 1:{line(78*4,5*4,78*4,74*4);line(147*4,5*4,147*4,74*4);};break;
      case 2:{line(89*4,16*4,89*4,63*4);line(136*4,16*4,136*4,63*4);};break;
      case 3:{line(97*4,24*4,97*4,55*4);line(128*4,24*4,128*4,55*4);};break;
      case 4:{line(103*4,30*4,103*4,49*4);line(122*4,30*4,122*4,49*4);};break;
      case 5:{line(107*4,34*4,107*4,45*4);line(118*4,34*4,118*4,45*4);};break;
      case 6:{line(110*4,37*4,110*4,42*4);line(115*4,37*4,115*4,42*4);};break;
      case 7:{line(112*4,39*4,112*4,40*4);line(113*4,39*4,113*4,40*4);};break;
    }
  }
void wallAL(int n)
  {
  switch(n)
    {
      case 1:line(74*4,1*4,77*4,4*4);line(74*4,78*4,77*4,75*4);break;
      case 2:line(79*4,6*4,88*4,15*4);line(79*4,73*4,88*4,64*4);break;
      case 3:line(90*4,17*4,96*4,23*4);line(90*4,62*4,96*4,56*4);break;
      case 4:line(98*4,25*4,102*4,29*4);line(98*4,54*4,102*4,50*4);break;
      case 5:line(104*4,31*4,106*4,33*4);line(104*4,48*4,106*4,46*4);break;
      case 6:line(108*4,35*4,109*4,36*4);line(108*4,44*4,109*4,43*4);break;
      case 7:putpixel(111*4, 38*4, 15);putpixel(111*4, 41*4, 15);break;
    }
  }
void wallCL(int n)
  {
  switch(n)
    {
      case 1:line(67*4,5*4,77*4,5*4);line(67*4,74*4,77*4,74*4);break;
      case 2:line(79*4,16*4,88*4,16*4);line(79*4,63*4,88*4,63*4);break;
      case 3:line(90*4,24*4,96*4,24*4);line(90*4,55*4,96*4,55*4);break;
      case 4:line(98*4,30*4,102*4,30*4);line(98*4,49*4,102*4,49*4);break;
      case 5:line(104*4,34*4,106*4,34*4);line(104*4,45*4,106*4,45*4);break;
      case 6:line(108*4,37*4,109*4,37*4);line(108*4,42*4,109*4,42*4);break;
      case 7:putpixel(111*4, 39*4, 15);putpixel(111*4, 40*4, 15);break;
    }
  }
void wallAR(int n)
  {
  switch(n)
    {
      case 1:line(151*4,1*4,148*4,4*4);line(151*4,78*4,148*4,75*4);break;
      case 2:line(146*4,6*4,137*4,15*4);line(146*4,73*4,137*4,64*4);break;
      case 3:line(135*4,17*4,129*4,23*4);line(135*4,62*4,129*4,56*4);break;
      case 4:line(127*4,25*4,123*4,29*4);line(127*4,54*4,123*4,50*4);break;
      case 5:line(121*4,31*4,119*4,33*4);line(121*4,48*4,119*4,46*4);break;
      case 6:line(117*4,35*4,116*4,36*4);line(117*4,44*4,116*4,43*4);break;
      case 7:putpixel(114*4, 38*4, 15);putpixel(114*4, 41*4, 15);break;
    }
  }
void wallCR(int n)
  {
  switch(n)
    {
      case 1:line(158*4,5*4,148*4,5*4);line(158*4,74*4,148*4,74*4);break;
      case 2:line(146*4,16*4,137*4,16*4);line(146*4,63*4,137*4,63*4);break;
      case 3:line(135*4,24*4,129*4,24*4);line(135*4,55*4,129*4,55*4);break;
      case 4:line(127*4,30*4,123*4,30*4);line(127*4,49*4,123*4,49*4);break;
      case 5:line(121*4,34*4,119*4,34*4);line(121*4,45*4,119*4,45*4);break;
      case 6:line(117*4,37*4,116*4,37*4);line(117*4,42*4,116*4,42*4);break;
      case 7:putpixel(114*4, 39*4, 15);putpixel(114*4, 40*4, 15);break;
    }
  }
void wallH(int n)
  {
  switch(n)
    {
      case 1:rectangle(78*4,5*4, 147*4,74*4);break;
      case 2:rectangle(89*4,16*4,136*4,63*4);break;
      case 3:rectangle(97*4,24*4,128*4,55*4);break;
      case 4:rectangle(103*4,30*4,122*4,49*4);break;
      case 5:rectangle(107*4,34*4,118*4,45*4);break;
      case 6:rectangle(110*4,37*4,115*4,42*4);break;
      case 7:rectangle(112*4,39*4,113*4,40*4);break;
    }
  }
void ClearnBox(int x1,int y1,int x2,int y2)
  {
    int onlycb,onlycbb;
    for(onlycb=x1;onlycb<=x2;onlycb++)
      {
        for(onlycbb=y1;onlycbb<=y2;onlycbb++)
          {
            putpixel(onlycb,onlycbb,0);
          }
       }
   }

void main()
  { int i;
    initgr();
    initmaze();
    x=1;y=random(12)+1;p=12;q=random(12)+1;
    line(y*5*4-3*4,4,y*5*4,16);line(y*5*4,4,y*5*4-12,16);
    fx=1;rectangle(66*4,0,159*4,79*4);n=1;goto wfront;
    head:rectangle(q*5*4-8,p*5*4-12, q*5*4-4,p*5*4-8);
    key:n=1;
    switch(bioskey(0))
 {case 4471:goto kfront;break;
  case 8051:goto kback;break;
  case 7777:goto kleft;break;
  case 8292:goto kright;break;    /* W,A,S,D 分别控制角度*/
  default:goto key;                          /*按任意键退出*/
  }
  kfront:ClearnBox(q*5*4-8,p*5*4-12,q*5*4-4,p*5*4-8);
        switch(fx)
    {
      case 1:if(b[p-1][q][1]==0){p=p-1;goto wfront;}else goto head;
      case 2:if(b[p][q-1][0]==0){q=q-1;goto wleft;}else goto head;
      case 3:if(b[p][q][1]==0){p=p+1;goto wback;}else goto head;
      case 4:if(b[p][q][0]==0){q=q+1;goto wright;}else goto head;
    }
  kback:ClearnBox(q*5*4-8,p*5*4-12,q*5*4-4,p*5*4-8);
        switch(fx)
    {
      case 1:if(b[p][q][1]==0){p=p+1;goto wfront;}else goto head;
      case 2:if(b[p][q][0]==0){q=q+1;goto wleft;}else goto head;
      case 3:if(b[p-1][q][1]==0){p=p-1;goto wback;}else goto head;
      case 4:if(b[p][q-1][0]==0){q=q-1;goto wright;}else goto head;
    }
  kleft:switch(fx)
    {
      case 1:fx=2;goto wleft;break;
      case 2:fx=3;goto wback;break;
      case 3:fx=4;goto wright;break;
      case 4:fx=1;goto wfront;break;
    }
  kright:switch(fx)
    {
      case 1:fx=4;goto wright;break;
      case 2:fx=1;goto wfront;break;
      case 3:fx=2;goto wleft;break;
      case 4:fx=3;goto wback;break;
    }
  wfront:ClearnBox(67*4,4,158*4,78*4);
     wfr:wall(n);
     if(b[p+1-n][q-1][0]==1){wallAL(n);goto wfro;}
     if(b[p-n][q-1][1]=1)wallCL(n);
     wfro:if(b[p-n][q-1][1]==1){wallAR(n);goto wfron;}
     if(b[p-n][q+1][1]==1)wallCR(n);
     wfron:if(b[p-n][q][1]==1||n==7){wallH(n);goto head;}
     else n=n+1;goto wfr;
  wleft:ClearnBox(67*4,4,158*4,78*4);
     wle:wall(n);
     if(b[p][q+1-n][1]==1){wallAL(n);goto wl;}
     if(b[p+1][q-n][0]==1)wallCL(n);
     wl:if(b[p-1][q+1-n][1]==1){wallAR(n);goto wlef;}
     if(b[p-1][q-n][0]==1)wallCR(n);
     wlef:if(b[p][q-n][0]==1||n==7){wallH(n);goto head;}
     else n=n+1;goto wle;
   wback:ClearnBox(67*4,4,158*4,78*4);
     wba:wall(n);
     if(b[p-1+n][q][0]==1){wallAL(n);goto wb;}
     if(b[p-1+n][q+1][1]==1)wallCL(n);
     wb:if(b[p-1+n][q-1][0]==1){wallAR(n);goto wbac;}
     if(b[p-1+n][q-1][1]==1)wallCR(n);
     wbac:if(b[p-1+n][q][1]==1||n==7){wallH(n);goto head;}
     else n=n+1;goto wba;
   wright:ClearnBox(67*4,4,158*4,78*4);
     wri:wall(n);
     if(b[p-1][q-1+n][1]==1){wallAL(n);goto wr;}
     if(b[p-1][q-1+n][0]==1)wallCL(n);
     wr:if(b[p][q-1+n][1]==1){wallAR(n);goto wrigh;}
     if(b[p+1][q-1+n][0]==1)wallCR(n);
     wrigh:if(b[p][q-1+n][0]==1||n==7){wallH(n);goto head;}
     else n=n+1;goto wri;
   getch();


  }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -