class Codeguessing::Console

Constants

MESSAGE

Attributes

game[R]
path[R]
scores[R]

Public Class Methods

new() click to toggle source
# File lib/codeguessing/console.rb, line 7
def initialize
  @path = File.join(File.dirname(__FILE__), 'data/scores.yml')
  @scores = load(@path) || []
  @game = Game.new
end

Public Instance Methods

gaming() click to toggle source
# File lib/codeguessing/console.rb, line 28
def gaming
  action = gets.chomp
  if action == 'hint'
    puts game.hint
    return go(true)
  end
  if game.valid?(action)
    puts game.guess(action)
  else
    puts MESSAGE['invalid_data']
  end
  go(true)
end
go(knowed = false) click to toggle source
# File lib/codeguessing/console.rb, line 18
def go(knowed = false)
  rules unless knowed
  puts "Attempt(s): #{game.attempts} | Hint(s): #{game.hint_count}"
  case game.win?
  when true then win
  when false then loose
  else gaming
  end
end
rules() click to toggle source
# File lib/codeguessing/console.rb, line 13
def rules
  puts MESSAGE['rules?']
  puts MESSAGE['rules'].join("\n") unless confirm?
end

Private Instance Methods

again() click to toggle source
# File lib/codeguessing/console.rb, line 82
def again
  puts MESSAGE['again?']
  if confirm?
    @game = Game.new
    return go(true)
  else
    puts MESSAGE['scores_line']['start']
    p scores
    puts MESSAGE['scores_line']['end']
  end
end
confirm?(action = gets.chomp) click to toggle source
# File lib/codeguessing/console.rb, line 44
def confirm?(action = gets.chomp)
  return true if action.downcase == 'y'
  false
end
load(path) click to toggle source
# File lib/codeguessing/console.rb, line 49
def load(path)
  YAML.load_file(path) if File.exist?(path)
end
loose() click to toggle source
# File lib/codeguessing/console.rb, line 69
def loose
  puts MESSAGE['loose']
  puts "#{MESSAGE['loose_code']} #{game.secret_code}"
  again
end
save(name = 'Anonim') click to toggle source
# File lib/codeguessing/console.rb, line 53
def save(name = 'Anonim')
  return puts MESSAGE['cant_save'] unless game.win?
  @scores << game.cur_score(name.chomp)
  File.new(path, 'w') unless File.exist?(path)
  File.open(path, "r+") do |f|
    f.write(scores.to_yaml)
  end
  scores
end
save?() click to toggle source
# File lib/codeguessing/console.rb, line 75
def save?
  puts MESSAGE['save?']
  return puts MESSAGE['not_saved'] unless confirm?
  puts MESSAGE['set_name']
  save(gets)
end
win() click to toggle source
# File lib/codeguessing/console.rb, line 63
def win
  puts MESSAGE['win']
  save?
  again
end