53 lines
832 B
C++
53 lines
832 B
C++
//
|
|
// Created by alex on 7/14/25.
|
|
//
|
|
|
|
#include "Deck.h"
|
|
|
|
Deck::Deck() : Deck(false) { }
|
|
|
|
|
|
Deck::Deck(bool shuffled) {
|
|
initialize_deck();
|
|
if (shuffled) {
|
|
shuffle();
|
|
}
|
|
cards_in_deck = deck.size();
|
|
}
|
|
|
|
|
|
|
|
void Deck::initialize_deck() {
|
|
for (auto r : Card::Ranks) {
|
|
for (auto c : Card::Suits) {
|
|
deck.emplace_back(c, r);
|
|
}
|
|
}
|
|
}
|
|
void Deck::print_deck() {
|
|
std::cout << deck.size() << std::endl;
|
|
for (auto c : deck) {
|
|
std::cout << c << std::endl;
|
|
}
|
|
}
|
|
|
|
void Deck::shuffle() {
|
|
std::random_device rd;
|
|
std::mt19937 g(rd());
|
|
|
|
std::ranges::shuffle(deck, g);
|
|
}
|
|
|
|
/**
|
|
*
|
|
* @return The card drawn from the top of the deck
|
|
*/
|
|
Card Deck::draw() {
|
|
const Card temp = deck.at(cards_in_deck - 1);
|
|
deck.pop_back();
|
|
cards_in_deck--;
|
|
return temp;
|
|
}
|
|
|
|
|