Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #ifndef DECK_HPP
- #define DECK_HPP
- #include <iostream>
- #include <vector>
- #include <cstdlib>
- #include <ctime>
- #include <algorithm> // random_shuffle
- #include "Card.hpp"
- using namespace std;
- //------------
- class Deck {
- public:
- Deck();
- int getNumCards() const;
- Card* drawCard();
- void shuffle();
- void clear();
- private:
- vector<Card*> cards;
- void swapCards(int i, int j);
- };
- Deck::Deck() {
- for (int r = 13; r >= 1; --r)
- for (int s = 3; s >= 0; --s)
- cards.push_back(new Card((Rank)r, (Suit)s));
- }
- int Deck::getNumCards() const {
- return cards.size();
- }
- Card* Deck::drawCard() {
- Card* cardPtr = cards.back();
- cards.pop_back();
- return cardPtr;
- }
- // SHUFFLE CARD IN DECK
- void Deck::shuffle() {
- srand((unsigned)time(NULL));
- std::random_shuffle(cards.begin(), cards.end());
- //http://www.cplusplus.com/reference/algorithm/random_shuffle/
- }
- void Deck::swapCards(int i, int j) {
- Card* temp = cards[i];
- cards[i] = cards[j];
- cards[j] = temp;
- }
- void Deck::clear() {
- cout << "Clear deck:\n";
- while (cards.size() > 0) {
- (cards.back())->show();
- cout << " ";
- delete cards.back();
- cards.pop_back();
- }
- cout << "\n\n";
- }
- #endif
Add Comment
Please, Sign In to add comment