Maze generation: Difference between revisions

Content added Content deleted
(→‎{{header|Haskell}}: Specified imports, applied hlint hindent, simplified a Boolean chain with 'bool')
Line 2,032: Line 2,032:
=={{header|EasyLang}}==
=={{header|EasyLang}}==


[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]
[https://easylang.online/apps/run.html?code=size%20%3D%2020%0A%23%20%0Asz%20%3D%202%20%2A%20size%20%2B%201%0Alen%20f%5B%5D%20sz%20%2A%20sz%0A%23%20%0Afunc%20make_maze%20.%20.%0Afor%20i%20range%20len%20f%5B%5D%0Af%5Bi%5D%20%3D%201%0A.%0Af%5B%28sz%20-%201%29%20%2A%20sz%20%2B%20sz%20-%202%5D%20%3D%200%0Ax%20%3D%201%20%2B%202%20%2A%20random%20size%0Ay%20%3D%201%20%2B%202%20%2A%20random%20size%0Af%5Bx%20%2B%20y%20%2A%20sz%5D%20%3D%200%0Avisited%20%3D%201%0Awhile%20visited%20%3C%20size%20%2A%20size%0Aoldx%20%3D%20x%0Aoldy%20%3D%20y%0Adir%20%3D%20random%204%0Aif%20dir%20%3D%200%20and%20x%20%2B%202%20%3C%20sz%0Ax%20%2B%3D%202%0Aelif%20dir%20%3D%201%20and%20y%20%2B%202%20%3C%20sz%0Ay%20%2B%3D%202%0Aelif%20dir%20%3D%202%20and%20x%20%3E%202%0Ax%20-%3D%202%0Aelif%20dir%20%3D%203%20and%20y%20%3E%202%0Ay%20-%3D%202%0A.%0Aif%20f%5By%20%2A%20sz%20%2B%20x%5D%20%3D%201%0Af%5By%20%2A%20sz%20%2B%20x%5D%20%3D%200%0Af%5B%28y%20%2B%20oldy%29%20/%202%20%2A%20sz%20%2B%20%28x%20%2B%20oldx%29%20/%202%5D%20%3D%200%0Avisited%20%2B%3D%201%0A.%0A.%0A.%0Afunc%20show_maze%20.%20.%0Ac2%23%20%3D%20%28100%20-%2024%20/%20size%29%20/%20size%20/%202%0Ac10%23%20%3D%20c2%23%20/%205%0Alinewidth%202%20%2A%20c10%23%0Acolor%20997%0Amove%200%200%0Arect%20100%20100%0Acolor%20543%0Afor%20r%20range%20sz%0Afor%20c%20range%20sz%0Aif%20f%5Br%20%2A%20sz%20%2B%20c%5D%20%3D%201%0Aif%20r%20mod%202%20%3D%200%0Aif%20c%20mod%202%20%3D%201%0Amove%20c10%23%20%2B%20%28c%20-%201%29%20%2A%20c2%23%20c10%23%20%2B%20r%20%2A%20c2%23%0Aline%20c10%23%20%2B%20%28c%20%2B%201%29%20%2A%20c2%23%20c10%23%20%2B%20r%20%2A%20c2%23%0A.%0Aelse%0Amove%20c10%23%20%2B%20c%20%2A%20c2%23%20c10%23%20%2B%20%28r%20-%201%29%20%2A%20c2%23%0Aline%20c10%23%20%2B%20c%20%2A%20c2%23%20c10%23%20%2B%20%28r%20%2B%201%29%20%2A%20c2%23%0A.%0A.%0A.%0A.%0A.%0Acall%20make_maze%0Acall%20show_maze Run it]


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