class MazeMagic::Generate
Attributes
algorithm[W]
height[R]
instructions_grid[R]
maze[R]
options[R]
width[R]
Public Class Methods
new(height:, width:, **options)
click to toggle source
# File lib/maze_magic/generate.rb, line 6 def initialize(height:, width:, **options) @height = height @width = width @options = options end
Public Instance Methods
algorithm()
click to toggle source
# File lib/maze_magic/generate.rb, line 18 def algorithm @algorithm ||= MazeMagic::MazeGenerator::RecursiveBacktracking end
generate_maze()
click to toggle source
# File lib/maze_magic/generate.rb, line 12 def generate_maze initialize_instructions_grid generate_maze_cells_from_instructions maze end
Private Instance Methods
generate_maze_cells_from_instructions()
click to toggle source
Generate
Maze
Cell objects from instructions:
2 dimensional array of these singleton objects:
MazeMagic::Edge.instance # ' ' MazeMagic::HorizontalWall.instance # _ MazeMagic::VerticalWall.instance # | MazeMagic::Passage.instance # ' '
Objects inside can be translated to maze walls:
_________ |_ | _ | | _| | _| | |_ | | | | | _| | | |___|_____|
# File lib/maze_magic/generate.rb, line 59 def generate_maze_cells_from_instructions @maze ||= algorithm .new(grid: instructions_grid) .tap { |generator| generator.generate } .maze end
grid_klass()
click to toggle source
# File lib/maze_magic/generate.rb, line 66 def grid_klass MazeMagic::Grid end
initialize_instructions_grid()
click to toggle source
Initialize instructions grid
_________ |_|_|_|_|_| |_|_|_|_|_| |_|_|_|_|_| |_|_|_|_|_| |_|_|_|_|_|
# File lib/maze_magic/generate.rb, line 35 def initialize_instructions_grid grid_options = options.select { |k,v| %i(start_x start_y).include?(k) } args = { height: height, width: width }.merge(grid_options) @instructions_grid = grid_klass.new(args) end