class RobotToyJonhnes::Game
Constants
- CARDINAL_POINTS
Attributes
command[RW]
facing[RW]
position_column[RW]
position_line[RW]
robot_height[RW]
robot_width[RW]
Public Class Methods
new()
click to toggle source
# File lib/robot_toy_jonhnes/game.rb, line 7 def initialize @position_line = @position_column = 0 @robot_height = @robot_width = 1 @facing = :EAST end
Public Instance Methods
board_height()
click to toggle source
# File lib/robot_toy_jonhnes/game.rb, line 13 def board_height @robot_height * 5 end
board_width()
click to toggle source
# File lib/robot_toy_jonhnes/game.rb, line 17 def board_width @robot_width * 5 end
move()
click to toggle source
# File lib/robot_toy_jonhnes/game.rb, line 42 def move movement_options = {NORTH: :to_north, SOUTH: :to_south, WEST: :to_west, EAST: :to_east} RobotMover.new(self).send movement_options[@facing] end
place(new_place)
click to toggle source
# File lib/robot_toy_jonhnes/game.rb, line 21 def place(new_place) new_line, new_column, new_orientation = new_place.split(',') RobotMover.new(self).to_local new_line, new_column, new_orientation end
report()
click to toggle source
# File lib/robot_toy_jonhnes/game.rb, line 26 def report board_print = "\n" board_height.times { |index| board_print += game_line(index) + "\n" } limit_line + board_print + limit_line end
rotate_left()
click to toggle source
# File lib/robot_toy_jonhnes/game.rb, line 32 def rotate_left facing_index = CARDINAL_POINTS.find_index @facing @facing = CARDINAL_POINTS[facing_index - 1] end
rotate_right()
click to toggle source
# File lib/robot_toy_jonhnes/game.rb, line 37 def rotate_right facing_index = CARDINAL_POINTS.find_index @facing @facing = CARDINAL_POINTS[facing_index + 1] || CARDINAL_POINTS[0] end
Private Instance Methods
game_line(line)
click to toggle source
# File lib/robot_toy_jonhnes/game.rb, line 64 def game_line(line) line_draw = '-' * board_width line_draw[robot_column_indexes] = facing[0] if robot_in_line? line '#' + line_draw + '#' end
limit_line()
click to toggle source
# File lib/robot_toy_jonhnes/game.rb, line 50 def limit_line '#' * (board_width + 2) end
robot_column_indexes()
click to toggle source
# File lib/robot_toy_jonhnes/game.rb, line 59 def robot_column_indexes last_column_position = position_column + robot_width - 1 position_column..last_column_position end
robot_in_line?(line)
click to toggle source
# File lib/robot_toy_jonhnes/game.rb, line 54 def robot_in_line?(line) last_line_position = robot_width + position_line - 1 (position_line..last_line_position).to_a.include? line end