Sha256: 12d58f55712ae70e1b49e5c1d7d7061ac1ccf13ab4b51405a6b3ebfc562a76c9

Contents?: true

Size: 931 Bytes

Versions: 5

Compression:

Stored size: 931 Bytes

Contents

# frozen_string_literal: true

require_relative 'autoload'

module CodebreakerKirill
  class Game
    include CodeGenerator

    attr_reader :user

    def initialize(user)
      @secret_code = CodeGenerator.call
      @user = user
    end

    def give_a_hint
      return nil if @user.hints_used >= @user.level[:hints]

      @user.hints_used += 1
      @secret_code.shuffle[@user.hints_used]
    end

    def respond_to_guess(input)
      @user.attempts_used += 1
      status = status(input, @secret_code)
      resolved_code = GuessHandler.new(input, @secret_code).call
      return { status: status, secret_code: @secret_code } if status == 'loss'

      { status: status, response: resolved_code, secret_code: @secret_code }
    end

    def status(input, code)
      return 'loss' if @user.attempts_used >= @user.level[:attempts]
      return 'win' if input.each_char.map(&:to_i) == code

      'in_game'
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
codebreaker_kirill-1.3.5 lib/codebreaker_kirill/game.rb
codebreaker_kirill-1.3.4 lib/codebreaker_kirill/game.rb
codebreaker_kirill-1.3.2 lib/codebreaker_kirill/game.rb
codebreaker_kirill-1.3.1 lib/codebreaker_kirill/game.rb
codebreaker_kirill-1.3.0 lib/codebreaker_kirill/game.rb