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