class MauxRobot::Robot
The main class. It executes the actions using its table and position
Attributes
position[R]
talkative[R]
Public Class Methods
new(table = MauxRobot::Table.new)
click to toggle source
# File lib/maux_robot/robot.rb, line 26 def initialize(table = MauxRobot::Table.new) @table = table @position = MauxRobot::NullPosition.new @talkative = false end
Public Instance Methods
left()
click to toggle source
# File lib/maux_robot/robot.rb, line 53 def left robot_placed? do @position.left end end
move()
click to toggle source
# File lib/maux_robot/robot.rb, line 41 def move robot_placed? do next_position = @position.forward_position ok_to_go?(next_position) do @position = next_position end @position end end
place(x:, y:, face:)
click to toggle source
# File lib/maux_robot/robot.rb, line 32 def place(x:, y:, face:) # rubocop:disable Naming/UncommunicativeMethodParamName position = MauxRobot::Position.new(x, y, face) ok_to_go?(position) do @position = position end @position end
report(format_type: :csv)
click to toggle source
# File lib/maux_robot/robot.rb, line 65 def report(format_type: :csv) robot_placed? do @position.report(format_type) end end
right()
click to toggle source
# File lib/maux_robot/robot.rb, line 59 def right robot_placed? do @position.right end end
verbose()
click to toggle source
# File lib/maux_robot/robot.rb, line 71 def verbose @talkative = !@talkative is_not = @talkative ? "is" : "is not" puts "Robot #{is_not} talkative now." end
Private Instance Methods
ok_to_go?(position) { || ... }
click to toggle source
# File lib/maux_robot/robot.rb, line 79 def ok_to_go?(position) raise NotOkToGo, position unless @table.contains?(position) yield end
robot_placed?() { || ... }
click to toggle source
# File lib/maux_robot/robot.rb, line 85 def robot_placed? raise RobotNotPlacedYet if @position.class == MauxRobot::NullPosition yield end