08/01/24 06:17:38
void wall(int p,int q)
{if (meiro[p][q]!=1)
{int dir;
meiro[p][q]=3;
dir = rand()%4+1;
if (dir==1&&meiro[p+2][q]!=3)
{meiro[p+1][q]=3;
wall(p+2,q);}
if (dir==2&&meiro[p-2][q]!=3)
{meiro[p-1][q]=3;
wall(p-2,q);}
if (dir==3&&meiro[p][q+2]!=3)
{meiro[p][q+1]=3;
wall(p,q+2);}
if (dir==4&&meiro[p][q-2]!=3)
{meiro[p][q-1]=3;
wall(p,q-2);
}}}
p,qはmeiro[p][q]に対応していて、meiro[偶数][偶数]の点です。
迷路を自動生成するプログラム作ってます。
色々調べて壁伸ばし法で作ることにして、wall関数なるものを自作しました。
0:道 1:壁 3:作りかけの壁
一応、迷路っぽいものはできるのですが、なんというかすかすかのものができてしまいます。