Class: Rb21::Hand

Inherits:
Object
  • Object
show all
Defined in:
lib/rb21/hand.rb

Constant Summary collapse

LIMIT =
21

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeHand

Returns a new instance of Hand.



8
9
10
# File 'lib/rb21/hand.rb', line 8

def initialize
  @cards = []
end

Instance Attribute Details

#cardsObject (readonly)

Returns the value of attribute cards.



6
7
8
# File 'lib/rb21/hand.rb', line 6

def cards
  @cards
end

Instance Method Details

#blackjack?Boolean

Returns:

  • (Boolean)


39
40
41
42
43
44
# 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?Boolean

Returns:

  • (Boolean)


35
36
37
# File 'lib/rb21/hand.rb', line 35

def busted?
  value > LIMIT
end

#clearObject



18
19
20
# File 'lib/rb21/hand.rb', line 18

def clear
  @cards.clear
end

#receive(card) ⇒ Object



12
13
14
15
16
# File 'lib/rb21/hand.rb', line 12

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

#valueObject



22
23
24
25
26
27
28
29
30
31
32
33
# 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