📄 maingame.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 + -