Sha256: bb766e576853230074942c5c58d361f3075fa9169c58b42aff389cc0207fa4af
Contents?: true
Size: 1.17 KB
Versions: 1
Compression:
Stored size: 1.17 KB
Contents
require_relative 'services/matching_service' require_relative 'services/statistic_service' class Game attr_accessor :player_name, :secret_code, :user_code, :attempts, :hints, :difficulty_name attr_reader :stats, :secret_code_for_hint def initialize(player_name = DEFAULT_NAME, difficulty = DIFFICULTIES[:default]) @stats = Statistic.stats || [] @player_name = player_name @difficulty_name = DIFFICULTIES.key(difficulty).to_s @attempts = difficulty[:attempts] @hints = difficulty[:hints] @db = DB @secret_code_for_hint = [] end def use_hint @hints -= 1 secret_code_for_hint.sort_by { rand }.pop end def run @secret_code = generate_code @secret_code_for_hint = @secret_code.clone end def generate_code Array.new(4) { rand(1..6) } end def result(response) @user_code = response.each_char.map(&:to_i) @attempts -= 1 return WINNING_RESULT if @secret_code == user_code Matching.new(self).create_response end def save_result @stats.push(Statistic.generate_stats(self)) DbUtils.add(@db, stats) end def won?(result) result == WINNING_RESULT end def lost? attempts.zero? end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
codebreaker_paratskiy-0.1.7 | lib/game.rb |