Sha256: 7dbcbb06722c9b02d65812aa634d1171b7e7807dbd024b456379bc5641d7fd96

Contents?: true

Size: 682 Bytes

Versions: 5

Compression:

Stored size: 682 Bytes

Contents

# frozen_string_literal: true

module Codebreaker
  class Player
    def initialize(name, tries_left, hints_left)
      self.name = name
      @tries_left = tries_left
      @hints_left = hints_left
    end

    def formatted
      format('%10s %6i', @name, points)
    end

    def as_json
      { name: @name, points: points }
    end

    def to_json(*options)
      as_json.to_json(*options)
    end

    def points
      100 * (@tries_left + 1) + 75 * @hints_left
    end

    private

    def name=(value)
      msg = 'The name must be between 1 and 10 characters long'
      raise(ArgumentError, msg) unless (1...10).cover? value.length
      @name = value
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
ep-codebreaker-0.3.2 lib/ep-codebreaker/player.rb
ep-codebreaker-0.3.1 lib/ep-codebreaker/player.rb
ep-codebreaker-0.3.0 lib/ep-codebreaker/player.rb
ep-codebreaker-0.2.1 lib/ep-codebreaker/player.rb
ep-codebreaker-0.2.0 lib/ep-codebreaker/player.rb