Class: MazeMagic::MazeGenerator::InstructionsGridToCellsGrid

Inherits:
Object
  • Object
show all
Defined in:
lib/maze_magic/maze_generator/instructions_grid_to_cells_grid.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(grid:) ⇒ InstructionsGridToCellsGrid

Returns a new instance of InstructionsGridToCellsGrid.



6
7
8
# File 'lib/maze_magic/maze_generator/instructions_grid_to_cells_grid.rb', line 6

def initialize(grid:)
  @instructions_grid = grid
end

Instance Attribute Details

#cells_gridObject (readonly)

Returns the value of attribute cells_grid.



4
5
6
# File 'lib/maze_magic/maze_generator/instructions_grid_to_cells_grid.rb', line 4

def cells_grid
  @cells_grid
end

#instructions_gridObject (readonly)

Returns the value of attribute instructions_grid.



4
5
6
# File 'lib/maze_magic/maze_generator/instructions_grid_to_cells_grid.rb', line 4

def instructions_grid
  @instructions_grid
end

Instance Method Details

#callObject



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/maze_magic/maze_generator/instructions_grid_to_cells_grid.rb', line 10

def call
  @cells_grid = []
  cells_grid << [edge] + Array.new((width * 2 - 1), hw) + [edge]

  height.times do |y|
    row = []
    row << vw

    width.times do |x|
      row << ((instructions_grid[y][x] & South.instance.to_i != 0) ? passage : hw)
      if instructions_grid[y][x] & East.instance.to_i != 0
        row << (((instructions_grid[y][x] | instructions_grid[y][x+1]) & South.instance.to_i != 0) ? passage : hw)
      else
        row << vw
      end
    end

    cells_grid << row
  end
  cells_grid
end