### Author Topic: Maze generator [CMLua]  (Read 705 times)

#### Cybermonkey

`-- maze.lua-- just a testwidth = 55height = 41function init_maze()     for y = 0 , height - 1 do         for x = 0 , width - 1 do            maze[x][y] = 1         end   endendfunction carve_maze(x, y)local      x1, y1 ,x2, y2 , dx, dy, dir, cnt      dir = int (rnd()*3)+1      cnt = 0   while cnt < 4 do       dx = 0       dy = 0       if dir == 0 then              dx = 1        elseif dir == 1 then               dy = 1         elseif dir == 2 then                dx = -1          else  dy = -1         end         x1 = x + dx         y1 = y + dy         x2 = x1 + dx         y2 = y1 + dy         if (x2 > 0) and (x2 < width) and (y2 > 0) and (y2 < height) and (maze[x1][y1] == 1) and (maze[x2][y2] == 1) then           maze[x1][y1]=0           maze[x2][y2]=0            carve_maze(x2, y2)         end         dir = (dir + 1) % 4;         cnt = cnt + 1      end   endfunction generate_maze()      maze[1][1] = 0      carve_maze(1, 1)      maze[1][0]=0      maze[width - 1][height - 10]=0endfunction show_maze()    for j = 0, height - 1 do         for i = 0, width -1  do            if maze[i][j] == 0 then             ink (hrgb (200,200,200)) fillrectangle (i*16,j*16,i*16+16,j*16+16)            else               ink (hrgb (20,20,20)) fillrectangle (i*16,j*16,i*16+16,j*16+16)         end      end  end  ink (hrgb (255,0,0))  fillrectangle (1*16,0*16,1*16+16,0*16+16)  ink (0)  drawtext (1*16,0*16,"S")  ink (hrgb (0,255,0))  fillrectangle ((width-1)*16,(height-10)*16,(width-1)*16+16,(height-10)*16+16)  ink (0)  drawtext ((width-1)*16,(height-10)*16,"F")endmaze = {}for i=0,width domaze [i]={}endrepeat cls()init_maze()generate_maze()show_maze()ink (65535)drawtext (0,680,"Press any key for a new maze. Press x to exit.")key=inkey()until key == "x"exit()`Now, guess, what I'll do next ... yes, use the maze generator with the raycaster.