程序
#include "dos.h"
#define n 6
#define h0 256
int h,x,y;
main()
{
int x0,y0,i;
init();
h=h0;x0=h/2;y0=x0;
for(i=1;i<=n;i++)
{h/=2;
x0+=h/2;
y0+=h/2;
x=x0+150;y=y0+100;
if(i==3) a(i,i+2);
else a(i,i);
}
getch();
grclose();
}
int init()
{union REGS r;
r.x.ax=0x0012;
int86(0x10,&r,&r);
r.h.ah=0x0b;
r.h.bh=0x00;
r.h.bl=7;
int86(0x10,&r,&r);
r.h.ah=0x0b;
r.h.bh=0x01;
r.h.bl=0x0;
int86(0x10,&r,&r);
return 0;
}
int a(int i,int color)
{
int j;
if(i>0)
{
d(i-1,color);for(j=1;j<=h;j++) {dot(color,x-j,y);delay(5);}x-=h;
a(i-1,color);for(j=1;j<=h;j++) {dot(color,x,y-j);delay(5);}y-=h;
a(i-1,color);for(j=1;j<=h;j++) {dot(color,x+j,y);delay(5);}x+=h;
b(i-1,color);
}
return x;
}
int b(int i,int color)
{int j;
if(i>0)
{
c(i-1,color);for(j=1;j<=h;j++) {dot(color,x,y+j);delay(5);}y+=h;
b(i-1,color);for(j=1;j<=h;j++) {dot(color,x+j,y);delay(5);}x+=h;
b(i-1,color);for(j=1;j<=h;j++) {dot(color,x,y-j);delay(5);}y-=h;
a(i-1,color);
}
return x;
}
int c(int i,int color)
{int j;
if(i>0)
{b(i-1,color);for(j=1;j<=h;j++) {dot(color,x+j,y);delay(5);}x+=h;
c(i-1,color);for(j=1;j<=h;j++) {dot(color,x,y+j);delay(5);}y+=h;
c(i-1,color);for(j=1;j<=h;j++) {dot(color,x-j,y);delay(5);}x-=h;
d(i-1,color);
}
return x;
}
int d(int i,int color)
{int j;
if(i>0)
{
a(i-1,color);for(j=1;j<=h;j++) {dot(color,x,y-j);delay(5);}y-=h;
d(i-1,color);for(j=1;j<=h;j++) {dot(color,x-j,y);delay(5);}x-=h;
d(i-1,color);for(j=1;j<=h;j++) {dot(color,x,y+j);delay(5);}y+=h;
c(i-1,color);
}
return x;
}
int dot(int color,int x,int y)
{union REGS r;
r.h.ah=0x0c;
r.h.bh=0;
r.h.al=color;
r.x.cx=x;
r.x.dx=y;
int86(0x10,&r,&r);
return 0;
}
int grclose()
{union REGS r;
r.x.ax=0x0003;
int86(0x10,&r,&r);
}