www.pudn.com > C++100.rar > HILBERT.C, change:2004-12-03,size:2001b


#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); 
}