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