coregame

C++ Lab4 Deck

Feb 1st, 2017
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.18 KB | None | 0 0
  1. #ifndef DECK_HPP
  2. #define DECK_HPP
  3.  
  4. #include <iostream>
  5. #include <vector>
  6. #include <cstdlib>
  7. #include <ctime>
  8. #include <algorithm> // random_shuffle
  9. #include "Card.hpp"
  10. using namespace std;
  11.  
  12. //------------
  13. class Deck {
  14. public:
  15.     Deck();
  16.     int getNumCards() const;
  17.     Card* drawCard();
  18.     void shuffle();
  19.     void clear();
  20. private:
  21.     vector<Card*> cards;
  22.     void swapCards(int i, int j);
  23. };
  24.  
  25. Deck::Deck() {
  26.     for (int r = 13; r >= 1; --r)
  27.         for (int s = 3; s >= 0; --s)
  28.             cards.push_back(new Card((Rank)r, (Suit)s));
  29. }
  30.  
  31. int Deck::getNumCards() const {
  32.     return cards.size();
  33. }
  34.  
  35. Card* Deck::drawCard() {
  36.     Card* cardPtr = cards.back();
  37.     cards.pop_back();
  38.     return cardPtr;
  39. }
  40.  
  41. // SHUFFLE CARD IN DECK
  42. void Deck::shuffle() {
  43.     srand((unsigned)time(NULL));
  44.     std::random_shuffle(cards.begin(), cards.end());
  45.     //http://www.cplusplus.com/reference/algorithm/random_shuffle/
  46. }
  47.  
  48. void Deck::swapCards(int i, int j) {
  49.     Card* temp = cards[i];
  50.     cards[i] = cards[j];
  51.     cards[j] = temp;
  52. }
  53.  
  54. void Deck::clear() {
  55.     cout << "Clear deck:\n";
  56.     while (cards.size() > 0) {
  57.         (cards.back())->show();
  58.         cout << " ";
  59.         delete cards.back();
  60.         cards.pop_back();
  61.     }
  62.     cout << "\n\n";
  63. }
  64. #endif
Add Comment
Please, Sign In to add comment