Sha256: b0ca9636e0889d31df024ebdaec22826a96b35150d693eb307f8773f3a92876e

Contents?: true

Size: 873 Bytes

Versions: 5

Compression:

Stored size: 873 Bytes

Contents

require_relative 'marker'
require_relative 'data'

module Codebreaker
  class Game
    ATTEMPTS = 5
    HINTS = 2

    include(Data)

    attr_accessor :player
    attr_reader :guesses, :attempts, :hints_left, :guess, :result, :requested_hint

    def initialize
      @attempts = ATTEMPTS
      @hints_left = HINTS
      @guesses = 0
      @secret_code = Array.new(4) { rand(1..6) }
    end

    def compare(input)
      @guess = input
      @attempts -= 1
      @guesses += 1
      @result = Marker.new(@guess, @secret_code).result
    end

    def win?
      @result == '++++' ? true : false
    end

    def hint
      return @requested_hint = '' unless @hints_left.nonzero?
      @hints_left -= 1
      @requested_hint = @secret_code[rand(0..3)]
    end

    def score
      return 0 if @attempts.zero?
      @attempts * 200 + @hints_left * 100 + 50
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
codebreaker_web-0.1.4 lib/codebreaker/game.rb
codebreaker_web-0.1.3 lib/codebreaker/game.rb
codebreaker_web-0.1.2 lib/codebreaker/game.rb
codebreaker_web-0.1.1 lib/codebreaker/game.rb
codebreaker_web-0.1.0 lib/codebreaker/game.rb