class Simplicard::CardDeck

Attributes

added_cards[R]
dealt_cards[R]
picked_cards[R]

Public Class Methods

new() click to toggle source
# File lib/simplicard.rb, line 123
def initialize
  @deck ||= []
  (1..13).each do |value|
      4.times do |suit|
        card = Card.new(value,suit)
        @deck << card
      end
  end
  @dealt_cards = []
  @picked_cards = []
  @added_cards = []
end

Public Instance Methods

add_a_card(card) click to toggle source

return the position that the card is inserted into return false if deck is full or card exists in the deck

# File lib/simplicard.rb, line 200
def add_a_card(card)
  if is_full?
    puts "Deck is full.You can't add a card"
    return false
  elsif empty?
    @deck << card
    @added_cards << card
    cards_left
  elsif !find_card(card)
    random = rand(cards_left)
    insert_card(random, card)
    @added_cards << card
    random
  else
    puts "Can't add a duplicate card to the Deck"
    return false
  end
end
cards_left() click to toggle source
# File lib/simplicard.rb, line 237
def cards_left
  get_deck.length
end
deal() click to toggle source
# File lib/simplicard.rb, line 231
def deal
  card = get_deck.pop
  @dealt_cards << card
  card
end
empty?() click to toggle source
# File lib/simplicard.rb, line 161
def empty?
  if @deck.length == 0
    return true
  else
    return false
  end
end
find_card(card) click to toggle source
# File lib/simplicard.rb, line 249
def find_card(card)
  if card_valid?(card)
    get_deck.each_with_index do |x,index|
      return index if (x.value == card.value) && (x.suit.value == card.suit.value)
    end
    return false
  end
end
is_complete?() click to toggle source

check to see if the deck has all 52 cards without duplicate

# File lib/simplicard.rb, line 174
def is_complete?
  if empty?
    puts "Deck is empty"
    return false
  elsif !is_full?
    puts "Deck is missing some cards"
    return false
  else
    myhash = {}
    @deck.each do |x|
      myhash[x.suit.value] ||= []
      myhash[x.suit.value] << x.value
    end

    Suit::VALID_SUIT.each do |suit|
      return false if myhash[suit].length != 13
    end
    return true

  end

end
is_full?() click to toggle source
# File lib/simplicard.rb, line 169
def is_full?
  return true if @deck.length >=52
end
my_deck() click to toggle source
# File lib/simplicard.rb, line 136
def my_deck
  @deck
end
pick_a_card() click to toggle source
# File lib/simplicard.rb, line 140
def pick_a_card
  if cards_left > 0
    random = rand(cards_left)
    card = get_deck.delete_at(random)
    @picked_cards << card
    card
  end
end
put_back_cards() click to toggle source
# File lib/simplicard.rb, line 149
def put_back_cards
  (@picked_cards + @dealt_cards).each do |x|
    if !find_card(x)
      @deck << x
    end
  end
  @dealt_cards = []
  @picked_cards = []
  @added_cards = []
  @deck
end
show() click to toggle source
# File lib/simplicard.rb, line 241
def show
  result = []
  get_deck.each do |x|
    result << x.show
  end
  result
end
shuffle_it() click to toggle source
# File lib/simplicard.rb, line 221
def shuffle_it
  cards_left.times do |i|
    random = rand(cards_left)
    temp = @deck[i]
    @deck[i] = @deck[random]
    @deck[random] = temp
  end
  get_deck
end

Private Instance Methods

card_valid?(card) click to toggle source
# File lib/simplicard.rb, line 261
def card_valid?(card)
  if card.is_a? Card
    return true
  else
    raise "The argument is not a Card"
  end
end
get_deck() click to toggle source
# File lib/simplicard.rb, line 269
def get_deck
  if @deck.empty? || @deck.nil?
    raise "Deck is empty"
  else
    @deck
  end
end
insert_card(pos,card) click to toggle source
# File lib/simplicard.rb, line 277
def insert_card(pos,card)
  @deck.insert(pos, card)
end
remove_card_from_dealt_cards(card) click to toggle source
# File lib/simplicard.rb, line 281
def remove_card_from_dealt_cards(card)
  if card_valid?(card)
    @dealt_cards.each_with_index do |x,index|
       if (x.value == card.value) && (x.suit.value == card.suit.value)
         @dealt_cards.delete_at(index)
         return index
       end
    end
  end
end