class Robotoy::Services::Move

Public Class Methods

new(robot:, table:, range:) click to toggle source
# File lib/robotoy/services/move.rb, line 4
def initialize(robot:, table:, range:)
  @robot = robot
  @table = table
  @range = range.to_i
end

Public Instance Methods

perform() click to toggle source
# File lib/robotoy/services/move.rb, line 10
def perform
  @robot.validate_if_placed
  send(@robot.orientation)
end

Private Instance Methods

east() click to toggle source
# File lib/robotoy/services/move.rb, line 27
def east
  @table.validate_next_position(x: @robot.x + @range)
  @robot.x += @range
end
method_missing(_name, *_args) click to toggle source
# File lib/robotoy/services/move.rb, line 37
def method_missing(_name, *_args)
  raise Robotoy::NotValidMethodError
end
north() click to toggle source
# File lib/robotoy/services/move.rb, line 17
def north
  @table.validate_next_position(y: @robot.y + @range)
  @robot.y += @range
end
south() click to toggle source
# File lib/robotoy/services/move.rb, line 22
def south
  @table.validate_next_position(y: @robot.y - @range)
  @robot.y -= @range
end
west() click to toggle source
# File lib/robotoy/services/move.rb, line 32
def west
  @table.validate_next_position(x: @robot.x - @range)
  @robot.x -= @range
end