Sha256: 726f1568999a34bc439d9de9c22f6269f4676aefc18c68e085f2d2375209daf0
Contents?: true
Size: 1.13 KB
Versions: 3
Compression:
Stored size: 1.13 KB
Contents
require 'yaml' module Codebreaker class Game HINT = 1 ATTEMPS = 10 PROPER = '+' WRONG_POSITION = '-' def initialize @secret_code = Array.new(4) { rand(1..6) }.join @hint = HINT @attempts = ATTEMPS @win_status = false end def match_guess(code) return "Your code is not valid" unless code.match(/(^([1-6]{4})$)/) @win_status = true if @secret_code == code @attempts -= 1 secret = @secret_code.chars.map(&:to_i) res = [] code.chars.map(&:to_i).each_with_index do |number, index| if number == secret[index] secret[index] = nil res << PROPER elsif secret.include? number secret[secret.find_index(number)] = nil res << WRONG_POSITION end end res.join end def loose? @attempts == 0 end def win? @win_status end def get_hint @hint -= 1 @hint >= 0 ? @secret_code[rand(4)] : "Not Available" end def save_stat( username ) File.open('./stat.yml','a+') do |f| f.write([user: username, attempts: @attempts, date: Time.now].to_yaml) end end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
edlvj_codebreaker-0.2.2 | lib/game.rb |
edlvj_codebreaker-0.2.1 | lib/game.rb |
edlvj_codebreaker-0.2.0 | lib/game.rb |