# 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