class Codebreaker::Console

Constants

ACCEPT_SAVING_RESULT
COMMANDS

Public Instance Methods

greeting() click to toggle source
# File lib/app/entities/console.rb, line 13
def greeting
  Representer.greeting_msg
end
main_menu() click to toggle source

Private Instance Methods

check_round_result(guess) click to toggle source
# File lib/app/entities/console.rb, line 61
def check_round_result(guess)
  return win if @game.win?(guess)
  return lose if @game.lose?(guess)

  round_result = @game.start_round(guess)
  Representer.round_info_text(round_result, @game.attempts, @game.hints)
end
choose_difficulty() click to toggle source
# File lib/app/entities/console.rb, line 43
def choose_difficulty
  Representer.select_difficulty_msg
  loop do
    finded_level = Difficulty.find(user_input)
    return finded_level if finded_level

    Representer.error_msg(I18n.t('invalid.include_error'))
  end
end
exit_console() click to toggle source
# File lib/app/entities/console.rb, line 106
def exit_console
  Representer.goodbye
  exit
end
lose() click to toggle source
# File lib/app/entities/console.rb, line 73
def lose
  Representer.lose_msg
  start_new_game
end
make_guess() click to toggle source
# File lib/app/entities/console.rb, line 53
def make_guess
  loop do
    Representer.make_guess_msg
    guess = make_valid_input_for_class(Guess)
    guess.hint? ? show_hint : check_round_result(guess.as_array_of_numbers)
  end
end
make_valid_input_for_class(klass) click to toggle source
# File lib/app/entities/console.rb, line 92
def make_valid_input_for_class(klass)
  loop do
    input = klass.new(user_input)
    return input if input.valid?

    Representer.error_msg(input.errors.join(', '))
  end
end
registration() click to toggle source
# File lib/app/entities/console.rb, line 35
def registration
  Representer.what_name_msg
  @user = make_valid_input_for_class(User)
  @difficulty = choose_difficulty
  @game = Game.new(@difficulty, @user)
  make_guess
end
save_result() click to toggle source
# File lib/app/entities/console.rb, line 88
def save_result
  save_to_db(@game.to_h)
end
show_hint() click to toggle source
# File lib/app/entities/console.rb, line 69
def show_hint
  @game.hints.positive? ? Representer.showed_hint_msg(@game.hint) : Representer.zero_hints_msg
end
start_new_game() click to toggle source
# File lib/app/entities/console.rb, line 84
def start_new_game
  Console.new.main_menu
end
statistics() click to toggle source
# File lib/app/entities/console.rb, line 30
def statistics
  loaded_db = load_db
  loaded_db.empty? ? Representer.empty_db_msg : Representer.show_db(loaded_db)
end
user_input() click to toggle source
# File lib/app/entities/console.rb, line 101
def user_input
  input = gets.chomp.downcase
  input == COMMANDS[:exit] ? exit_console : input
end
win() click to toggle source
# File lib/app/entities/console.rb, line 78
def win
  Representer.win_msg
  save_result if user_input == ACCEPT_SAVING_RESULT
  start_new_game
end