class Maze

Attributes

fields[R]
height[R]
width[R]

Public Class Methods

new(width, height) click to toggle source
# File lib/maze/game/maze.rb, line 6
def initialize(width, height)
  @width = width
  @height = height
  @fields = MazeGenerator.new(width, height).create
end

Public Instance Methods

exit?(position) click to toggle source
# File lib/maze/game/maze.rb, line 21
def exit?(position)
  @fields[position] == :exit
end
possible_directions(position) click to toggle source
# File lib/maze/game/maze.rb, line 12
def possible_directions(position)
  way_fields = []
  way_fields << :top if way_or_exit_field? position, [0, -1]
  way_fields << :bottom if way_or_exit_field? position, [0, +1]
  way_fields << :left if way_or_exit_field? position, [-1, 0]
  way_fields << :right if way_or_exit_field? position, [+1, 0]
  way_fields
end
to_s() click to toggle source
# File lib/maze/game/maze.rb, line 29
def to_s
  field_to_s
end
to_s_for_player(player_number = nil, player_position) click to toggle source
# File lib/maze/game/maze.rb, line 25
def to_s_for_player(player_number = nil, player_position)
  field_to_s(player_number, player_position)
end

Private Instance Methods

field_to_s(player_number = nil, player_position = nil) click to toggle source
# File lib/maze/game/maze.rb, line 34
def field_to_s(player_number = nil, player_position = nil)
  field_as_string = ''
  (@height + 2).times do |y|
    (@width + 2).times do |x|
      field_as_string << map_field_element([x, y], player_number, player_position)
    end
    field_as_string << "\n"
  end
  field_as_string
end
map_field_element(position, player_number, player_position) click to toggle source
# File lib/maze/game/maze.rb, line 50
def map_field_element(position, player_number, player_position)
  case @fields[position]
    when :wall
      'x'
    when :way
      if player_position == position
        player_number.to_s
      else
        ' '
      end
    when :exit
      'O'
    else
      '*'
  end
end
way_or_exit_field?(position, diff) click to toggle source
# File lib/maze/game/maze.rb, line 45
def way_or_exit_field?(position, diff)
  position = [position[0] + diff[0], position[1] + diff[1]]
  @fields[position] == :way || @fields[position] == :exit
end