C++ Builder MEMO 3

迷路作成ソース for C++ Builder
以下のソースはg[]に迷路を作ります。
const SCX=101,SCY=101;
char g[SCX*SCY];

void MakeMaze(void){
 int i,j,ax,ay;
 char *p,*q;
 p=g;for(i=0;i<SCX;i++)*(p++)=1;
 for(i=0;i<SCY-2;i++){*(p++)=1;for(j=0;j<SCX-2;j++)*(p++)=(j&1)&(i&1);*(p++)=1;}
 for(i=0;i<SCX;i++)*(p++)=1;
 for(i=2;i<SCY-1;i+=2)for(j=2;j<SCX-1;j+=2){
  do{switch(rand()&3){
    case 0:ax=0;ay=-1;break;
    case 1:if(j==2){ax=-1;ay=0;break;}else continue;
    case 2:ax=1;ay=0;break;
    case 3:ax=0;ay=1;break;}
   q=g+j+ax+(i+ay)*SCX;}while(*q);*q=1;}}

(Imageコンポーネントに表示する方法)
@Imageコンポーネントを作る。
AFormCreateイベントを作り以下を書く。
 char *p;int i,j;
 Image1->Width=SCX*2;Image1->Height=SCY*2;
 MakeMaze();
 p=g;for(i=0;i<SCY;i++)for(j=0;j<SCX;j++)
  PatBlt(Image1->Canvas->Handle,j*2,i*2,2,2,(*(p++))?WHITENESS:BLACKNESS);

弾が自分に飛んでくるソース。
x,y=自分 hx,hy=敵 xx,yy=飛んでくる移動量
 int xx,yy;
 xx=abs(hx-x);yy=abs(hy-y);if(!xx)xx=1;else if(!yy)yy=1;
 if(xx>yy){yy=6*yy/xx;xx=6;}else{xx=6*xx/yy;yy=6;}
 if(x<hx)xx=-xx;if(y<hy)yy=-yy;

タスクバーに一切表示しなくする(Delphi 4.0)
Application.Initialize;
Application.ShowMainForm := False;
SetWindowLong(Application.Handle, GWL_EXSTYLE,
 GetWindowLong(Application.Handle, GWL_EXSTYLE) or WS_EX_TOOLWINDOW);
ShowWindow(Application.Handle, SW_HIDE);
Application.CreateForm(TForm1, Form1);

return