Sha256: c86eca1f0c7d35421b85c15f83c22b7585694f9fa6f07bd235ed06d7e13b4a86

Contents?: true

Size: 1.39 KB

Versions: 1

Compression:

Stored size: 1.39 KB

Contents

module Codebreaker
  class Game
    HINTS_COUNT = 2
    DEF_MAX_SCORE = 500

    attr_reader :round_number

    def initialize
      @secret_code = ""
      @round_number = 0
      @hints_used = 0
    end
 
    def start
      4.times {
      	@secret_code += (Random.rand(6) + 1).to_s
      } if @secret_code.empty?
      @round_number += 1
    end

    def check (gues)
      raise ArgumentError, 'argument length must be equal 4' unless gues.to_s.length == 4
      raise ArgumentError, 'argument must contain only numbers from 1 to 6' unless gues.to_s[/[1-6]{4}/] == gues.to_s
      
      pluses = minuses = '' 
      sc_array = @secret_code.split('')
      gues_array = gues.to_s.split('')

      gues_array.each_with_index do |val, index|
        if (val == sc_array[index]) 
          sc_array[index] = '0'
          gues_array[index] = '+'
          pluses += '+'
        end
      end

      gues_array.each_with_index do |val, index|
        if (sc_array.include?(val))
          sc_array[sc_array.find_index(val)] = '-'
          minuses += '-'
        end
      end

      result = pluses + minuses
    end

    def hint
      raise 'Called hint to many times' unless @hints_used < HINTS_COUNT
      @hints_used += 1     
      @secret_code[Random.rand(4)]
    end

    def score
      DEF_MAX_SCORE - @hints_used*50 - @round_number*10
    end

    def save

    end

    def getScoreBoard

    end

  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
codebreaker-0.1.0 lib/codebreaker/game.rb