deepcerulean/minotaur

View on GitHub
lib/minotaur/extruders/recursive_backtracking_extruder.rb

Summary

Maintainability
A
0 mins
Test Coverage
module Minotaur
  module Extruders
    #
    #  contains plugin functionality for labyrinth to extrude (mazelike) hallways recursively
    #
    module RecursiveBacktrackingExtruder
      #include PositionHelpers
      #
      #  extrude hallways recursively
      #
      def extrude!(opts={})
        start = opts.delete(:start) { origin }

        # 'empty' here basically means 'unexplored'
        each_empty_adjacent_to(start) do |next_position|
          build_passage!(start,next_position)
          extrude!(start: next_position)
        end

        self
      end
    end
  end
end