#include #include "card.h" #include "deck.h" #include void Deck::init() { int suitSize = DECK_SIZE / (spade - club + 1); for (int suitLoop = club; suitLoop <= spade; ++suitLoop) { for (int rankLoop = 0; rankLoop < suitSize; ++rankLoop) { _deck[suitLoop * suitSize + rankLoop].setSuit(suitLoop + 1); // remember, 0 = BLANK _deck[suitLoop * suitSize + rankLoop].setRank(rankLoop + 2); // lowest rank is 2, not 0 } } } void Deck::shuffle() { assert (DECK_SIZE > 1); for (int curCard = 1; curCard < DECK_SIZE; ++curCard) { // pick a card to swap with curCard unsigned swapCard = rand() % (curCard + 1); int saveRank = _deck[swapCard].getRank(); int saveSuit = _deck[swapCard].getSuit(); // 'move' curCard to swapCard position _deck[swapCard].setRank( _deck[curCard].getRank() ); _deck[swapCard].setSuit( _deck[curCard].getSuit() ); // 'move' curCard to swapCard position _deck[curCard].setRank(saveRank); _deck[curCard].setSuit(saveSuit); } }