class Codebreaker::Game
Constants
- CODE_LENGTH
- CODE_RANGE
Attributes
all_attempts[RW]
all_hints[RW]
attempts_left[RW]
code[RW]
difficulties[RW]
difficulty[RW]
hints_code[R]
hints_left[RW]
input_code[RW]
name[RW]
Public Class Methods
new(name, difficulty)
click to toggle source
# File lib/codebreaker/game.rb, line 12 def initialize(name, difficulty) @difficulties = Loader.load('difficulties') @code = generate_code @hints_code = @code.chars.shuffle game_option(name, difficulty) end
Public Instance Methods
attempts_left?()
click to toggle source
# File lib/codebreaker/game.rb, line 47 def attempts_left? attempts_left.positive? end
game_option(name, difficulty)
click to toggle source
# File lib/codebreaker/game.rb, line 19 def game_option(name, difficulty) @name = name @difficulty = difficulty.to_sym @all_attempts = difficulty_option[:attempts] @all_hints = difficulty_option[:hints] @attempts_left = difficulty_option[:attempts] @hints_left = difficulty_option[:hints] end
hint()
click to toggle source
# File lib/codebreaker/game.rb, line 28 def hint return unless hints_left? @hints_left -= 1 generate_hint end
hints_left?()
click to toggle source
# File lib/codebreaker/game.rb, line 35 def hints_left? hints_left.positive? end
input_operation(input_code)
click to toggle source
# File lib/codebreaker/game.rb, line 39 def input_operation(input_code) @input_code = input_code return unless attempts_left? @attempts_left -= 1 check_input(@code, @input_code) end
save(filename = 'stats')
click to toggle source
# File lib/codebreaker/game.rb, line 55 def save(filename = 'stats') Codebreaker::Loader.save(to_h, filename) end
win?()
click to toggle source
# File lib/codebreaker/game.rb, line 51 def win? input_code == code end
Private Instance Methods
check_input(code, input)
click to toggle source
# File lib/codebreaker/game.rb, line 73 def check_input(code, input) guess_checker = Codebreaker::GuessChecker.new(code, input) guess_checker.symbols guess_checker.check_input end
difficulty_option()
click to toggle source
# File lib/codebreaker/game.rb, line 69 def difficulty_option @difficulties[@difficulty] end
generate_code()
click to toggle source
# File lib/codebreaker/game.rb, line 61 def generate_code Array.new(CODE_LENGTH) { rand(CODE_RANGE) }.join end
generate_hint()
click to toggle source
# File lib/codebreaker/game.rb, line 65 def generate_hint @hints_code.pop end
to_h()
click to toggle source
# File lib/codebreaker/game.rb, line 79 def to_h { name: @name, difficulty: @difficulty, attempts: @all_attempts, hints: @all_hints, code: @code, used_attempts: @all_attempts - @attempts_left, used_hints: @all_hints - @hints_left, date: Time.now } end