Sha256: 204276b46e1ee0fae06694c50dd35f91f10dac39622e476dbb33c6d43b6e4684
Contents?: true
Size: 1.67 KB
Versions: 2
Compression:
Stored size: 1.67 KB
Contents
# frozen_string_literal: true module Codebreaker class Game include Codebreaker::GuessChecker attr_accessor :input_code, :code, :name, :difficulties, :difficulty, :hints_left, :attempts_left attr_reader :minuse, :plus, :none, :hints_code CODE_LENGTH = 4 CODE_RANGE = (1..6).freeze def initialize @difficulties = Codebreaker::Loader.load('difficulties') @code = generate_code @hints_code = @code.chars.shuffle symbols end def game_option(name, difficulty) @name = name @difficulty = difficulty @attempts_left = difficulty_option[:attempts] @hints_left = difficulty_option[:hints] end def hint return unless hints_left? @hints_left -= 1 generate_hint end def hints_left? hints_left.positive? end def input_operation(input_code) return unless attempts_left? @attempts_left -= 1 check_input(@code, input_code) end def attempts_left? attempts_left.positive? end def win? input_code == code end def save Codebreaker::Loader.save(to_h, 'stats') end private def generate_code Array.new(CODE_LENGTH) { rand(CODE_RANGE) }.join end def generate_hint @hints_code.pop end def difficulty_option @difficulties[@difficulty] end def to_h { name: @name, difficulty: @difficulty, attempts: difficulty_option[:attempts], hints: difficulty_option[:hints], code: @code, used_attempts: difficulty_option[:attempts] - @attempts_left, used_hints: difficulty_option[:hints] - @hints_left } end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
codebreaker_kub-0.2.3 | lib/codebreaker/game.rb |
codebreaker_kub-0.2.2 | lib/codebreaker/game.rb |