class Rb21::Hand

Constants

LIMIT

Attributes

cards[R]

Public Class Methods

new() click to toggle source
# File lib/rb21/hand.rb, line 8
def initialize
  @cards = []
end

Public Instance Methods

blackjack?() click to toggle source
# File lib/rb21/hand.rb, line 39
def blackjack?
  names = @cards.map(&:name)
  @cards.size == 2 &&
    names.include?(Card::ACE) &&
    (names & Card::TEN_VALUES).size.positive?
end
busted?() click to toggle source
# File lib/rb21/hand.rb, line 35
def busted?
  value > LIMIT
end
clear() click to toggle source
# File lib/rb21/hand.rb, line 18
def clear
  @cards.clear
end
receive(card) click to toggle source
# File lib/rb21/hand.rb, line 12
def receive(card)
  @cards << card
  @cards.sort_by! { |c| c.value.size }
  card
end
value() click to toggle source
# File lib/rb21/hand.rb, line 22
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