Sha256: 5a6a958e1cde0c17a568eedbee7ab22ca1ec19ceba26cfbbc5acc31c681e1688

Contents?: true

Size: 616 Bytes

Versions: 2

Compression:

Stored size: 616 Bytes

Contents

require_relative 'location'

module Model
  class Compass
    DIRECTIONS = {
      up: [0, 1],
      left: [-1, 0],
      down: [0, -1],
      right: [1, 0]
    }

    attr_reader :direction

    def initialize(direction)
      @direction = direction
    end

    def translate_location(location)
      Location.new(
        location.x + DIRECTIONS[direction][0],
        location.y + DIRECTIONS[direction][1]
      )
    end

    def turn
      dir_index = DIRECTIONS.keys.index(direction)
      dir_index += 1
      dir_index %= DIRECTIONS.length
      self.class.new(DIRECTIONS.keys[dir_index])
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
karel-interpreter-0.2.0 lib/karel/model/compass.rb
karel-interpreter-0.1.0 lib/karel/model/compass.rb