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