Sha256: 6a9715d8e25919ec1b2e4036750f347b0895db4e9c12a593e37dde7591371629

Contents?: true

Size: 869 Bytes

Versions: 1

Compression:

Stored size: 869 Bytes

Contents

# frozen_string_literal: true

module Rb21
  class Hand
    LIMIT = 21
    attr_reader :cards

    def initialize
      @cards = []
    end

    def receive(card)
      @cards << card
      @cards.sort_by! { |c| c.value.size }
      card
    end

    def clear
      @cards.clear
    end

    def value
      val = 0
      @cards.map { |card| card.value.sort.reverse }.each do |possible_values|
        possible_values.each_with_index do |possible_value, i|
          if i + 1 == possible_values.size || val + possible_value <= LIMIT
            val += possible_value
            break
          end
        end
      end
      val
    end

    def busted?
      value > LIMIT
    end

    def blackjack?
      names = @cards.map(&:name)
      @cards.size == 2 &&
        names.include?(Card::ACE) &&
        (names & Card::TEN_VALUES).size.positive?
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
rb21-0.1.0 lib/rb21/hand.rb