class MastermindSname::Game
Attributes
game_colours[RW]
guess[RW]
player[RW]
start_time[RW]
Public Class Methods
new(player)
click to toggle source
# File lib/mastermind_sname/sname/game.rb, line 8 def initialize(player) @guesses = [] @player = player @game_colours = GameColour.new(@player).get_colours puts @game_colours.join("") create_records_file unless File.file?("game_records.json") @message = Message.new end
Public Instance Methods
collect_user_guess()
click to toggle source
# File lib/mastermind_sname/sname/game.rb, line 60 def collect_user_guess puts "#{10 - @guesses.length} guess(es) left" unless @guesses.empty? @guess = get_input loop do @game_logic = GameLogic.new(@guess, @game_colours) valid = @game_logic.valid_length? || @game_logic.input_command? Command.new.action(@guess, @game_colours, @guesses) puts @game_logic.length_feedback unless valid @guess = get_input unless valid break if valid end end
correct?()
click to toggle source
# File lib/mastermind_sname/sname/game.rb, line 33 def correct? @guess == @game_colours.join("") end
create_records_file()
click to toggle source
# File lib/mastermind_sname/sname/game.rb, line 37 def create_records_file system "echo '{\"beginner\":[],\"intermediate\":[],\"advanced\":[]}' > g"\ "ame_records.json" end
game_end()
click to toggle source
# File lib/mastermind_sname/sname/game.rb, line 48 def game_end if correct? update_player record = Record.new(@player) record.set_new @message.congratulations_screen @player record.display_top_ten else @message.game_over end end
play()
click to toggle source
# File lib/mastermind_sname/sname/game.rb, line 17 def play @start_time = Time.now puts @message.start(@player, @game_colours) start_guessing play_again end
play_again()
click to toggle source
# File lib/mastermind_sname/sname/game.rb, line 73 def play_again @message.play_again choice = get_input if choice == "y" Game.new(@player).play else exit end end
record_guess()
click to toggle source
# File lib/mastermind_sname/sname/game.rb, line 83 def record_guess unless @guess == "h" @guesses << @guess correct? @game_logic.get_feedback end end
start_guessing()
click to toggle source
# File lib/mastermind_sname/sname/game.rb, line 24 def start_guessing loop do collect_user_guess puts record_guess break if @guesses.length > 9 || correct? end puts game_end end
update_player()
click to toggle source
# File lib/mastermind_sname/sname/game.rb, line 42 def update_player @player[:guesses_count] = @guesses.length @player[:game_colours] = @game_colours @player[:time] = (Time.now - @start_time).round.time_format end