class CodebreakerFirst::Game
Rubocop
Attributes
code[RW]
game_result[RW]
user_tries[RW]
Public Class Methods
new(code = '', user_tries = 0, game_result = nil)
click to toggle source
# File lib/codebreaker_first.rb, line 11 def initialize(code = '', user_tries = 0, game_result = nil) @code = code @user_tries = user_tries @game_result = game_result end
Public Instance Methods
check_code(input_code)
click to toggle source
# File lib/codebreaker_first.rb, line 29 def check_code(input_code) @user_tries += 1 return lose if @user_tries >= MAX_TRIES return win if input_code == @code validate_code input_code result = '' @code.chars.each.with_index do |char, index| case char == input_code[index] when true result << '+' else result << '-' if input_code.include? char end end result end
from_hash(data)
click to toggle source
# File lib/codebreaker_first.rb, line 17 def from_hash(data) Game.new data['code'], data['user_tries'], data['game_result'] end
lose()
click to toggle source
# File lib/codebreaker_first.rb, line 54 def lose @game_result = false end
results()
click to toggle source
# File lib/codebreaker_first.rb, line 64 def results Result.results end
save_result(name)
click to toggle source
# File lib/codebreaker_first.rb, line 58 def save_result(name) raise Exception, 'To save, you must finish the game!' if @game_result.nil? Result.save name, @user_tries, @game_result end
start()
click to toggle source
# File lib/codebreaker_first.rb, line 21 def start return if code.length == 4 4.times do @code << rand(1...6).to_s end end
win()
click to toggle source
# File lib/codebreaker_first.rb, line 50 def win @game_result = true end
Private Instance Methods
validate_code(code)
click to toggle source
# File lib/codebreaker_first.rb, line 70 def validate_code(code) raise Exception unless code.is_a?(Numeric) || code.is_a?(String) code = code.to_s raise Exception, 'Code must contains 4 numbers from 1 to 6' unless code =~ /^[1-6]{4}$/ end