class CodebreakerRostik::Game
Constants
- LENGTH_GUESS_CODE
- RANGE_GUESS_CODE
Attributes
attempts_left[R]
hints_left[R]
secret_code[R]
secret_code_for_hints[R]
Public Class Methods
new()
click to toggle source
# File lib/game.rb, line 9 def initialize @hints_left = 0 @attempts_left = 0 @secret_code = generate_secrete_code @secret_code_for_hints = @secret_code.clone.shuffle end
Public Instance Methods
attempts_left_increase(user)
click to toggle source
# File lib/game.rb, line 32 def attempts_left_increase(user) user[:attempts_left] += 1 end
attempts_left_increment()
click to toggle source
# File lib/game.rb, line 28 def attempts_left_increment @attempts_left += 1 end
compare_guess_and_secret_codes(guess_code)
click to toggle source
# File lib/game.rb, line 41 def compare_guess_and_secret_codes(guess_code) @result_signs = '' double_secret_code = @secret_code.clone code_arr = guess_code.split('').map(&:to_i) double_guess_code = code_arr check_same_index(code_arr, double_secret_code, double_guess_code) [double_secret_code, double_guess_code].each(&:compact!) check_different_index(double_guess_code, double_secret_code) @result_signs end
give_digit_hint()
click to toggle source
# File lib/game.rb, line 36 def give_digit_hint @hints_left += 1 @secret_code_for_hints.pop end
hints_left_increase(user)
click to toggle source
# File lib/game.rb, line 20 def hints_left_increase(user) user[:hints_left] += 1 end
hints_left_increment()
click to toggle source
# File lib/game.rb, line 24 def hints_left_increment @hints_left += 1 end
valid_guess_code?(guess_code)
click to toggle source
# File lib/game.rb, line 16 def valid_guess_code?(guess_code) validate_each_char_in_range?(guess_code.split(''), RANGE_GUESS_CODE) && valid_length?(guess_code, LENGTH_GUESS_CODE) end
Private Instance Methods
check_different_index(double_guess_code, double_secret_code)
click to toggle source
# File lib/game.rb, line 64 def check_different_index(double_guess_code, double_secret_code) double_guess_code.each do |guess_digit| next unless double_secret_code.include?(guess_digit) double_secret_code[double_secret_code.find_index(guess_digit)] = nil @result_signs += '-' end end
check_same_index(code_arr, double_secret_code, double_guess_code)
click to toggle source
# File lib/game.rb, line 55 def check_same_index(code_arr, double_secret_code, double_guess_code) code_arr.each_index do |index| next unless code_arr[index] == @secret_code[index] double_secret_code[index], double_guess_code[index] = nil @result_signs += '+' end end
generate_secrete_code()
click to toggle source
# File lib/game.rb, line 73 def generate_secrete_code Array.new(LENGTH_GUESS_CODE) { rand(RANGE_GUESS_CODE) } end