class Robulator::Robot

Constants

ORIENTATIONS
VALID_TURN

Attributes

direction[R]
position[R]

Public Instance Methods

move() click to toggle source
# File lib/robulator/robot.rb, line 32
def move
  @position = next_position if next_position
end
next_position() click to toggle source
# File lib/robulator/robot.rb, line 26
def next_position
  return unless placed?
  axis, value = *ORIENTATIONS[direction][:move]
  position.merge({axis => position[axis] + value})
end
place(x, y, direction) click to toggle source
# File lib/robulator/robot.rb, line 13
def place(x, y, direction)
  direction = direction.to_sym.downcase unless direction.is_a?(Symbol)
  return unless ORIENTATIONS.keys.include?(direction)

  @position  = {x: Integer(x), y: Integer(y)}
  @direction = direction
rescue ArgumentError
end
placed?() click to toggle source
# File lib/robulator/robot.rb, line 22
def placed?
  !!(direction && position)
end
turn(relative_direction) click to toggle source
# File lib/robulator/robot.rb, line 36
def turn(relative_direction)
  return if !placed? || !VALID_TURN.include?(relative_direction)
  @direction = ORIENTATIONS[direction][:turns][relative_direction]
end