Sha256: 1c90794ff9ebb641dfb268b4ce8ebf7c649a2fe1333c21f25c3a3491c7e039ca
Contents?: true
Size: 1.35 KB
Versions: 1
Compression:
Stored size: 1.35 KB
Contents
require_relative '../constants' require_relative 'user' require_relative 'difficulty' require 'date' module CodebreakerKarolina class Game include CodebreakerConstants attr_accessor :user, :difficulty attr_reader :secret_code, :date def start @date = DateTime.now @secret_code = generate_code.freeze @hint = @secret_code.chars.uniq end def compare_code(guess) comparison_result(@secret_code.chars, guess.chars) end def win?(guess) @user.used_attempts += 1 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 def valid_code?(code) !!code[/\A[1-6]{4}\z/] end private 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
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
codebreaker_karolina-0.1.9 | lib/modules/game.rb |