class Codebreaker::Console
Constants
- ACTIONS_FOR_DATABASE
- USER_ACTIONS
Public Instance Methods
choose_action()
click to toggle source
# File lib/entities/console.rb, line 14 def choose_action respondent.show_message(:greeting) loop do respondent.show_message(:choose_action) case input when USER_ACTIONS[:start] then return process when USER_ACTIONS[:rules] then rules.show_rules when USER_ACTIONS[:stats] then show_statistics else respondent.show_message(:wrong_input_action) end end end
show_statistics()
click to toggle source
# File lib/entities/console.rb, line 27 def show_statistics respondent.show(winners_load) end
winners_load()
click to toggle source
# File lib/entities/console.rb, line 31 def winners_load statistic.winners(load_db) end
Private Instance Methods
game()
click to toggle source
# File lib/entities/console.rb, line 45 def game @game ||= Game.new end
game_state_valid?()
click to toggle source
# File lib/entities/console.rb, line 90 def game_state_valid? game.attempts_left.positive? && !game.winner end
input()
click to toggle source
# File lib/entities/console.rb, line 115 def input input = gets.chomp.downcase input == USER_ACTIONS[:leave] ? leave : input end
leave()
click to toggle source
# File lib/entities/console.rb, line 120 def leave respondent.show_message(:leave) exit end
lose()
click to toggle source
# File lib/entities/console.rb, line 98 def lose game.remove_instance_helpers respondent.show_message(:when_lose) new_process end
new_process()
click to toggle source
# File lib/entities/console.rb, line 111 def new_process choose_action end
play_game()
click to toggle source
# File lib/entities/console.rb, line 79 def play_game respondent.show_message(:in_process) while game_state_valid? what_guessed = game.attempt(input) next if game.winner respondent.show(what_guessed) if what_guessed respondent.show(game.errors) unless game.errors.empty? end result_decision end
player()
click to toggle source
# File lib/entities/console.rb, line 37 def player @player ||= Player.new end
process()
click to toggle source
# File lib/entities/console.rb, line 57 def process game.game_options(user_difficulty: setup_difficulty, player: setup_player) play_game end
respondent()
click to toggle source
# File lib/entities/console.rb, line 49 def respondent @respondent ||= Respondent.new end
result_decision()
click to toggle source
# File lib/entities/console.rb, line 94 def result_decision game.winner ? win : lose end
rules()
click to toggle source
# File lib/entities/console.rb, line 41 def rules @rules ||= Rules.new end
setup_difficulty()
click to toggle source
# File lib/entities/console.rb, line 71 def setup_difficulty loop do respondent.show_message(:select_difficulty) user_difficulty_input = input return user_difficulty_input if game.valid_difficulties?(user_difficulty_input) end end
setup_player()
click to toggle source
# File lib/entities/console.rb, line 62 def setup_player respondent.show_message(:ask_name) loop do player.assign_name(input.capitalize) next respondent.show(player.errors_store) unless player.valid? return player if player.valid? end end
statistic()
click to toggle source
# File lib/entities/console.rb, line 53 def statistic @statistic ||= Statistics.new end
win()
click to toggle source
# File lib/entities/console.rb, line 104 def win game.remove_instance_helpers respondent.show_message(:when_win) save_to_db(game) if input == ACTIONS_FOR_DATABASE[:save_player] new_process end