class DungeonWalker

Constants

WALKING_POSITIONS

Public Class Methods

new( rooms, dungeon_size, entry_room ) click to toggle source
# File lib/dungeon/dungeon_walker.rb, line 7
def initialize( rooms, dungeon_size, entry_room )
  @rooms = rooms
  @dungeon_size = dungeon_size
  @entry_room = entry_room
end

Public Instance Methods

get_connected_rooms_positions( room_position ) click to toggle source
# File lib/dungeon/dungeon_walker.rb, line 34
def get_connected_rooms_positions( room_position )
  connected_positions = []
  WALKING_POSITIONS.each do |wp|

    top = room_position[0] + wp[0]
    left = room_position[1] + wp[1]

    if( room_position != [ top, left ] && top >= 1 && left >= 1 && top <= @dungeon_size && left <= @dungeon_size &&
        @rooms.has_key?( [ top, left ] ) )
      connected_positions << [ top, left ]
    end

  end
  # p connected_positions
  connected_positions
end
walk_rooms() click to toggle source
# File lib/dungeon/dungeon_walker.rb, line 13
def walk_rooms()
  walking_room_queue = [ @entry_room.top_left_array ]
  walked_rooms_positions = Set.new

  until walking_room_queue.empty?
    current_room_position = walking_room_queue.shift
    walked_rooms_positions << current_room_position

    connected_rooms_positions = get_connected_rooms_positions(  current_room_position )
    connected_rooms_positions.each do |room_position|
      # p room_position
      next if walked_rooms_positions.include?( room_position )
      walked_rooms_positions << room_position
      walking_room_queue << room_position
      # p walked_rooms_positions
    end

  end
  walked_rooms_positions
end