Class: Rb21::Hand
- Inherits:
-
Object
- Object
- Rb21::Hand
- Defined in:
- lib/rb21/hand.rb
Constant Summary collapse
- LIMIT =
21
Instance Attribute Summary collapse
-
#cards ⇒ Object
readonly
Returns the value of attribute cards.
Instance Method Summary collapse
- #blackjack? ⇒ Boolean
- #busted? ⇒ Boolean
- #clear ⇒ Object
-
#initialize ⇒ Hand
constructor
A new instance of Hand.
- #receive(card) ⇒ Object
- #value ⇒ Object
Constructor Details
#initialize ⇒ Hand
Returns a new instance of Hand.
8 9 10 |
# File 'lib/rb21/hand.rb', line 8 def initialize @cards = [] end |
Instance Attribute Details
#cards ⇒ Object (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
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
35 36 37 |
# File 'lib/rb21/hand.rb', line 35 def busted? value > LIMIT end |
#clear ⇒ Object
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 |
#value ⇒ Object
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 |