Sha256: 72583cfe1dd1d0de07652e7fdebd5c6d71abcd97d1732a7f5368b62ca64fa673
Contents?: true
Size: 1.34 KB
Versions: 2
Compression:
Stored size: 1.34 KB
Contents
require_relative '../constants' require_relative 'user' require_relative 'difficulty' module CodebreakerKarolina class Game include CodebreakerConstants attr_accessor :user, :difficulty attr_reader :secret_code def start @secret_code = generate_code.freeze @hint = @secret_code.chars.uniq end def compare_code(guess) return unless valid_code?(guess) @user.used_attempts += 1 comparison_result(@secret_code.chars, guess.chars) end def win?(guess) return true if @secret_code == guess false end def lose? return true if @user.used_attempts >= @difficulty.attempts false end def hint return unless hints_left? @user.used_hints += 1 @hint.shuffle!.pop end private def valid_code?(code) !!code[/\A[1-6]{4}\z/] end def generate_code Array.new(CODE_SIZE) { rand(NUM_RANGE) }.join end def comparison_result(secret_code, user_code) result = '' user_code.each_with_index do |num, index| next unless secret_code.include? num result += num == secret_code[index] ? PLUS : MINUS secret_code[secret_code.index(num)] = nil end result.chars.sort.join end def hints_left? return true if @difficulty.hints > @user.used_hints false end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
codebreaker_karolina-0.1.6 | lib/modules/game.rb |
codebreaker_karolina-0.1.5 | lib/modules/game.rb |