class Game1
Attributes
instream[RW]
mastermind_code[RW]
messages[RW]
outstream[RW]
Public Class Methods
new(instream, outstream, messages)
click to toggle source
# File lib/game1.rb, line 15 def initialize(instream, outstream, messages) self.instream = instream self.outstream = outstream self.messages = Messages.new self.mastermind_code = CodeGenerator.new @guess = 0 end
Public Instance Methods
compare_codes(evaluated_input)
click to toggle source
# File lib/game1.rb, line 52 def compare_codes(evaluated_input) @guess += 1 guess_code = evaluated_input.input.chars eval_guess = CompareCodes.new(@secret_code, guess_code) if eval_guess.match? == false outstream.puts messages.no_match outstream.puts messages.color_match(eval_guess.color_match) outstream.puts messages.position_color_match(eval_guess.position_color_match) elsif eval_guess.match? duration = Time.diff(@start_time, Time.now) outstream.puts messages.winner outstream.puts messages.duration(duration[:minute], duration[:second], @guess) outstream.puts messages.program_instructions @won = true end end
generate_secret_code()
click to toggle source
# File lib/game1.rb, line 23 def generate_secret_code @secret_code = mastermind_code.secret_code end
play()
click to toggle source
# File lib/game1.rb, line 27 def play @start_time = Time.now generate_secret_code outstream.puts messages.game_intro until won? outstream.puts messages.game_command_request user_input = instream.gets.strip evaluated_input = EvaluateInput.new(user_input) break if user_input == "q" || user_input == "quit" process_game_commands(evaluated_input) end end
process_game_commands(evaluated_input)
click to toggle source
# File lib/game1.rb, line 40 def process_game_commands(evaluated_input) if evaluated_input.length_short? outstream.puts messages.too_short elsif evaluated_input.length_long? outstream.puts messages.too_long elsif evaluated_input.input_is_valid? compare_codes(evaluated_input) else outstream.puts messages.not_valid_input end end
won?()
click to toggle source
# File lib/game1.rb, line 69 def won? @won end