class Codebraker::Game
Attributes
attempts[R]
hints[R]
result_of_comparing[R]
Public Class Methods
new()
click to toggle source
# File lib/codebracker/game.rb, line 9 def initialize @secret_code = '' @user_suggested_code = '' @attempts = 5 @hints = 2 @score = 0 generate_code end
Public Instance Methods
compare_codes()
click to toggle source
# File lib/codebracker/game.rb, line 43 def compare_codes @secret_code_for_comparing = @secret_code.dup 4.times { |i| if @secret_code_for_comparing[i] == @user_suggested_code[i] @secret_code_for_comparing[i] = '$' @user_suggested_code[i] = '+' end } 4.times { |i| if @secret_code_for_comparing.include?(@user_suggested_code[i]) @secret_code_for_comparing.sub!(@user_suggested_code[i], '$') @user_suggested_code[i] = '-' end } 4.times { |i| if /[\d]/ =~ @user_suggested_code[i] @user_suggested_code[i] = ' ' end } @result_of_comparing = @user_suggested_code.dup end
count_score()
click to toggle source
# File lib/codebracker/game.rb, line 65 def count_score @score = @attempts * 10 + @hints * 15 end
decrease_attempts()
click to toggle source
# File lib/codebracker/game.rb, line 69 def decrease_attempts @attempts -= 1 end
generate_code()
click to toggle source
# File lib/codebracker/game.rb, line 34 def generate_code @secret_code = (1..4).map { rand(1..6) }.join end
loose?()
click to toggle source
# File lib/codebracker/game.rb, line 30 def loose? @attempts.zero? end
show_hint()
click to toggle source
# File lib/codebracker/game.rb, line 79 def show_hint puts @secret_code[rand(0..3)] end
show_result_of_comparing()
click to toggle source
# File lib/codebracker/game.rb, line 83 def show_result_of_comparing puts @user_suggested_code end
start(user_suggested_code)
click to toggle source
# File lib/codebracker/game.rb, line 18 def start(user_suggested_code) @user_suggested_code = user_suggested_code decrease_attempts validate_input(user_suggested_code) compare_codes show_result_of_comparing end
use_hint()
click to toggle source
# File lib/codebracker/game.rb, line 73 def use_hint return ABSENT_HITNS_MESSAGE if @hints.zero? @hints -= 1 show_hint end
validate_input(input)
click to toggle source
# File lib/codebracker/game.rb, line 38 def validate_input(input) raise ArgumentError, 'Type exactly 4 integer' unless input.length == 4 raise ArgumentError, 'Type only integers from 1 to 6' if input =~ /[^1-6]/ end
win?()
click to toggle source
# File lib/codebracker/game.rb, line 26 def win? @result_of_comparing == '++++' end