class Mastermind::Oscar::GameManager

Attributes

difficulty[R]
user[R]

Public Class Methods

new(diff = nil) click to toggle source
# File lib/mastermind/oscar/game_manager.rb, line 11
def initialize(diff = nil)
  @difficulty = diff
  set_read_stream

  RecordManager.create_save_files
end

Public Instance Methods

alert_invalid_input() click to toggle source
# File lib/mastermind/oscar/game_manager.rb, line 23
def alert_invalid_input
  Printer.output "\tHmmm! You entry seems incorrect. Try again."
end
game_on?(arg) click to toggle source
# File lib/mastermind/oscar/game_manager.rb, line 82
def game_on? (arg)
  return false if arg == :quit

  show_top_10(@difficulty) if arg == :won
  return true
end
get_first_char() click to toggle source
# File lib/mastermind/oscar/game_manager.rb, line 68
def get_first_char
  return (@stream.gets + " ").chomp[0].downcase.strip
end
play(allowed = true) click to toggle source
# File lib/mastermind/oscar/game_manager.rb, line 59
def play(allowed = true)
  return :quit unless set_difficulty 
  @recorder= RecordManager.new(user)
  @user = @recorder.user unless user

  codemaker = Codemaker.new(difficulty, @recorder)
  return codemaker.start if allowed
end
set_difficulty() click to toggle source
# File lib/mastermind/oscar/game_manager.rb, line 72
def set_difficulty
  return true if difficulty
  Printer.level_select_msg
  input = get_first_char

  return false if input.eql? 'q'

  @difficulty = Mastermind::Oscar.game_level(input)
end
set_read_stream(stream = STDIN) click to toggle source

useful for testing inputs

# File lib/mastermind/oscar/game_manager.rb, line 19
def set_read_stream (stream = STDIN)
  @stream = stream
end
show_instructions() click to toggle source
# File lib/mastermind/oscar/game_manager.rb, line 93
def show_instructions
  Printer.output(RecordManager.get_instructions)
end
show_records() click to toggle source
# File lib/mastermind/oscar/game_manager.rb, line 89
def show_records
  Printer.output_file(RecordManager.get_records)
end
show_top_10(level = nil) click to toggle source
# File lib/mastermind/oscar/game_manager.rb, line 97
def show_top_10 (level = nil)
  list = level.nil? ? Mastermind::Oscar.game_level.values : [level]
  
  t_obj = TimeManager.new

  list.each do |lvl|
    lvl = lvl.to_s
    rec = RecordManager.get_top_ten(lvl)
    Printer.output_top_ten(lvl,rec,t_obj)
  end

end
start_game(stub_for_test=false) click to toggle source
# File lib/mastermind/oscar/game_manager.rb, line 27
def start_game(stub_for_test=false)
  Printer.welcome_msg
  status = true

  while status
    Printer.format_input_query

    input = get_first_char
    if input == 'q'
      break
    elsif input == 't'
      show_top_10
      status = !stub_for_test
    elsif input == 'i'
      show_instructions
      status = !stub_for_test
    elsif input == "r"
      show_records
      status = !stub_for_test
    elsif input == 'p'
      # play game
      status = game_on? play
      @difficulty = nil
    else 
      alert_invalid_input
      status = !stub_for_test
    end
  end
  @user ||= ''
  Printer.quit_msg(user)
end