class Shoe

Attributes

cards[RW]
num_decks[RW]

Public Class Methods

new(num_decks = 1) click to toggle source
# File lib/blackjack/shoe.rb, line 17
def initialize(num_decks = 1)
  @num_decks = num_decks
  @cards = []
end
shuffle_specs() click to toggle source
# File lib/blackjack/shoe.rb, line 103
def self.shuffle_specs
  [80, 81, 82, 84, 86, 89, 92, 95]
end

Public Instance Methods

needs_to_shuffle?() click to toggle source
# File lib/blackjack/shoe.rb, line 22
def needs_to_shuffle?
  return true if cards.size.zero?

  total_cards = num_decks * 52
  cards_dealt = total_cards - cards.size
  used = cards_dealt / total_cards.to_f * 100.0

  used > Shoe.shuffle_specs[num_decks - 1]
end
new_aces() click to toggle source
# File lib/blackjack/shoe.rb, line 48
def new_aces
  self.cards = []
  (num_decks * 10).times do
    (0..3).each do |suit_value|
      cards << Card.new(0, suit_value)
    end
  end
  shuffle
end
new_aces_jacks() click to toggle source
# File lib/blackjack/shoe.rb, line 68
def new_aces_jacks
  self.cards = []
  (num_decks * 10).times do
    (0..3).each do |suit_value|
      cards << Card.new(0, suit_value)
      cards << Card.new(10, suit_value)
    end
  end
  shuffle
end
new_eights() click to toggle source
# File lib/blackjack/shoe.rb, line 89
def new_eights
  self.cards = []
  (num_decks * 10).times do
    (0..3).each do |suit_value|
      cards << Card.new(7, suit_value)
    end
  end
  shuffle
end
new_jacks() click to toggle source
# File lib/blackjack/shoe.rb, line 58
def new_jacks
  self.cards = []
  (num_decks * 10).times do
    (0..3).each do |suit_value|
      cards << Card.new(10, suit_value)
    end
  end
  shuffle
end
new_regular() click to toggle source
# File lib/blackjack/shoe.rb, line 36
def new_regular
  self.cards = []
  num_decks.times do
    (0..3).each do |suit_value|
      (0..12).each do |value|
        cards << Card.new(value, suit_value)
      end
    end
  end
  shuffle
end
new_sevens() click to toggle source
# File lib/blackjack/shoe.rb, line 79
def new_sevens
  self.cards = []
  (num_decks * 10).times do
    (0..3).each do |suit_value|
      cards << Card.new(6, suit_value)
    end
  end
  shuffle
end
next_card() click to toggle source
# File lib/blackjack/shoe.rb, line 99
def next_card
  cards.shift
end
shuffle() click to toggle source
# File lib/blackjack/shoe.rb, line 32
def shuffle
  7.times { cards.shuffle! }
end