http://aanda.system.to/maze/maze2.html
こちらのサイトを参考に迷路を作ってみようと思ったのですが、どうしてもうまくいきません。どこがおかしいのかご指摘していただけたらと思います。
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int maze[15][15];
void maze_init(){
short inx,iny;
for(inx=0; inx<15; inx++){
for(iny=0; iny<15; iny++){
if(inx==0 || inx==14 || iny==0 || iny==14)
maze[inx][iny] = 0; //0=道
else if(inx==2 && iny==2)
maze[inx][iny] = 0;
else
maze[inx][iny] = 1; //1=壁
}
}
}
short maze_sub(short x, short y){
short x1,y1,px,py,r,check,count;
count = 0;
x1 = x; y1 = y; //(x,y)の値を(x1,y1)に
srand((unsigned)time(NULL));
RANDOM:
r = rand()%4+1; //乱数生成
CHECK:
switch(r){
case 1: //上(0,-1)
px = 0;
py = -1;
check = 1;
break;
case 2: //右(1,0)
px = 1;
py = 0;
check = 2;
break;
case 3: //下(0,1)
px = 0;
py = 1;
check = 3;
break;
case 4: //左(-1,0)
px = -1;
py = 0;
check = 4;
break;
}
if(maze[x1+px*2][y1+py*2] == 1){
maze[x1+px][y1+py] =0;
maze[x1+px*2][y1+py*2] = 0;
//(x1+px,y1+py),(x1+px*2,y1+py*2)を道に
x1 = x1+px*2; y1 = y1+py*2;
//(x1,y1)を(x1+px*2,y1+py*2)へ移動
goto RANDOM;
}else if(check == 1 && count != 4){
r = 2;
count = count+1;
goto CHECK;
}else if(check == 2 && count != 4){
r = 3;
count =count+1;
goto CHECK;
}else if(check == 3 && count != 4){
r = 4;
count = count+1;
goto CHECK;
}else if(check == 4 && count != 4){
r = 1;
count = count+1;
goto CHECK;
}else{
return 0;
}
}
int main(){
short x,y;
maze_init();
for(x=2; x<15; x+=2){
for(y=2; y<15; y+=2){
maze_sub(x,y);
}
}
for(x=0; x<15; x++){ //画面に表示
for(y=0; y<15; y++){
if(maze[x][y] == 0)
printf(" ");
else
printf("■");
}
printf("\n");
}
return 0;
}