class TresBot::Robot
Attributes
current_position[RW]
facing[RW]
is_on_the_table[RW]
Public Class Methods
new()
click to toggle source
# File lib/tres_bot.rb, line 12 def initialize self.current_position = [0,0] self.facing = 'NORTH' self.is_on_the_table = false end
Public Instance Methods
compass(dir)
click to toggle source
# File lib/tres_bot.rb, line 34 def compass(dir) dir = dir.downcase axis = ['north','south'].include?(dir) ? 'y':'x' operator = ['north','east'].include?(dir) ? '+' : '-' [axis,operator] end
left()
click to toggle source
# File lib/tres_bot.rb, line 29 def left c = ::CircularList::List.new(['NORTH','EAST','SOUTH','WEST']) self.facing = c.fetch_previous(c.index(self.facing)) end
move()
click to toggle source
# File lib/tres_bot.rb, line 41 def move calibration = self.compass(self.facing) axis = calibration[0] operator = calibration[1] if axis == 'x' unless (self.current_position[0] == 0 && operator == '-') || (self.current_position[0] == 4 && operator == '+') self.current_position[0]=self.current_position[0].to_i.send(operator,1) end else unless (self.current_position[1] == 0 && operator == '-') || (self.current_position[1] == 4 && operator == '+') self.current_position[1]=self.current_position[1].to_i.send(operator,1) end end end
place(position)
click to toggle source
# File lib/tres_bot.rb, line 18 def place(position) self.is_on_the_table = true self.current_position = [position[0],position[1]] self.facing = position[2].upcase end
report()
click to toggle source
# File lib/tres_bot.rb, line 56 def report rep = "#{self.current_position.join(', ')}, #{self.facing}" puts rep rep end
right()
click to toggle source
# File lib/tres_bot.rb, line 24 def right c = ::CircularList::List.new(['NORTH','EAST','SOUTH','WEST']) self.facing = c.fetch_next(c.index(self.facing)) end