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