Sha256: e4517185385e357dc867fc9854a8bf7422d3453b24b6c6b1f89c1362993b07e8
Contents?: true
Size: 1.12 KB
Versions: 1
Compression:
Stored size: 1.12 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})$)/) @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 @win_status = true if res.join == '++++' 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
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
edlvj_codebreaker-0.1.0 | lib/game.rb |