Maze generation: Difference between revisions

Content added Content deleted
Line 2,032: Line 2,032:
=={{header|EasyLang}}==
=={{header|EasyLang}}==


[https://easylang.online/apps/run.html?code=size%3D20%0A%23%20%0Asz%3D2%2Asize%2B1%0A%23%20we%20only%20have%20one-dimensional%20arrays%0Alen%20f%5B%5D%20sz%2Asz%0A%23%20%0Afunc%20make_maze..%0A%23%20the%20maze%20is%20created%20by%20random%20walking%20around%0Afor%20i%20range%20len%20f%5B%5D%0Af%5Bi%5D%3D1%0A.%0Ax%3D1%2B2%2Arandom%20size%0Ay%3D1%2B2%2Arandom%20size%0Af%5Bx%2By%2Asz%5D%3D0%0Avisited%3D1%0Awhile%20visited%20%3C%20size%2Asize%0Aoldx%3Dx%0Aoldy%3Dy%0Adir%3Drandom%204%0Aif%20dir%3D0%20and%20x%2B2%20%3C%20sz%0Ax%2B%3D2%0Aelif%20dir%3D1%20and%20y%2B2%20%3C%20sz%0Ay%2B%3D2%0Aelif%20dir%3D2%20and%20x%20%3E%202%0Ax-%3D2%0Aelif%20dir%3D3%20and%20y%20%3E%202%0Ay-%3D2%0A.%0Aif%20f%5By%2Asz%2Bx%5D%3D1%0Af%5By%2Asz%2Bx%5D%3D0%0Af%5B%28y%2Boldy%29/2%2Asz%2B%28x%2Boldx%29/2%5D%3D0%0Avisited%2B%3D1%0A.%0A.%0Af%5B%28sz-1%29%2Asz%2Bsz-2%5D%3D0%0A.%0Afunc%20show_maze..%0Ac2%23%3D%28100-24/size%29/size/2%0Ac10%23%3Dc2%23/5%0Alinewidth%202%2Ac10%23%0Acolor%20997%0Amove%200%200%0Arect%20100%20100%0Acolor%20543%0Afor%20r%20range%20sz%0Afor%20c%20range%20sz%0Aif%20f%5Br%2Asz%2Bc%5D%3D1%0Aif%20r%20mod%202%3D0%0Aif%20c%20mod%202%3D1%0Amove%20c10%23%2B%28c-1%29%2Ac2%23%20c10%23%2Br%2Ac2%23%0Aline%20c10%23%2B%28c%2B1%29%2Ac2%23%20c10%23%2Br%2Ac2%23%0A.%0Aelse%0Amove%20c10%23%2Bc%2Ac2%23%20c10%23%2B%28r-1%29%2Ac2%23%0Aline%20c10%23%2Bc%2Ac2%23%20c10%23%2B%28r%2B1%29%2Ac2%23%0A.%0A.%0A.%0A.%0A.%0Acall%20make_maze%0Acall%20show_maze Run it]
[https://easylang.online/ide/?code=size=20%0A%23 %0Asz=2*size+1%0A%23 we only have one-dimensional arrays%0Alen f[] sz*sz%0A%23 %0Afunc make_maze..%0A%23 the maze is created by random walking around%0A for i range len f[] f[i]=1 . x=1+2*random size y=1+2*random size f[x+y*sz]=0 visited=1 while visited < size*size oldx=x oldy=y dir=random 4 if dir=0 and x+2 < sz x+=2 elif dir=1 and y+2 < sz y+=2 elif dir=2 and x > 2 x-=2 elif dir=3 and y > 2 y-=2 . if f[y*sz+x]=1 f[y*sz+x]=0 f[(y+oldy)/2*sz+(x+oldx)/2]=0 visited+=1 . . f[(sz-1)*sz+sz-2]=0 . func show_maze.. c2%23=(100-24/size)/size/2 c10%23=c2%23/5 linewidth 2*c10%23 color 997 move 0 0 rect 100 100 color 543 for r range sz for c range sz if f[r*sz+c]=1 if r mod 2=0 if c mod 2=1 move c10%23+(c-1)*c2%23 c10%23+r*c2%23 line c10%23+(c+1)*c2%23 c10%23+r*c2%23 . else move c10%23+c*c2%23 c10%23+(r-1)*c2%23 line c10%23+c*c2%23 c10%23+(r+1)*c2%23 . . . . . call make_maze call show_maze Run it]


<lang easyprog.online>size = 20
<lang easyprog.online>size = 20