Sha256: 22ea126d4b47a771759e36b2c58d8ce62e05a7ae58ebbdebc443a23768f1a8c3

Contents?: true

Size: 673 Bytes

Versions: 1

Compression:

Stored size: 673 Bytes

Contents

# frozen_string_literal: true

module Rb21
  class Deck
    attr_reader :cards

    def initialize
      @cards = []
      @discarded = []
      build
    end

    def draw
      raise "Draw pile is empty" if empty?
      (@discarded << @cards.shift).last
    end

    def empty?
      @cards.size.zero?
    end

    def reshuffle
      raise "The deck is not empty" unless @cards.size.zero?
      @cards = @discarded
      @discarded = []
      @cards.shuffle!
    end

    private

    def build
      Card::SUITS.each do |suit|
        Card::ALL_NAMES.each do |name|
          @cards << Card.new(name, suit)
        end
      end
      @cards.shuffle!
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
rb21-0.1.0 lib/rb21/deck.rb