summaryrefslogtreecommitdiff
path: root/noncore/games/solitaire/carddeck.cpp
Side-by-side diff
Diffstat (limited to 'noncore/games/solitaire/carddeck.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/games/solitaire/carddeck.cpp22
1 files changed, 16 insertions, 6 deletions
diff --git a/noncore/games/solitaire/carddeck.cpp b/noncore/games/solitaire/carddeck.cpp
index 87c043a..a2d0076 100644
--- a/noncore/games/solitaire/carddeck.cpp
+++ b/noncore/games/solitaire/carddeck.cpp
@@ -20,13 +20,13 @@
#include <stdlib.h>
#include <time.h>
#include "card.h"
#include "carddeck.h"
-CardDeck::CardDeck(int jokers) : numberOfJokers(jokers), deckCreated(FALSE)
+CardDeck::CardDeck(int jokers, int numOfDecks) : numberOfJokers(jokers), numberOfDecks(numOfDecks), deckCreated(FALSE)
{
cards = new (Card *)[getNumberOfCards()];
}
CardDeck::~CardDeck()
@@ -37,16 +37,20 @@ CardDeck::~CardDeck()
}
void CardDeck::createDeck()
{
if (!deckCreated) {
- for (int i = 0; i < 52; i++)
- cards[i] = newCard( (eValue)((i % 13) + 1), (eSuit)((i / 13) + 1), FALSE );
+ for (int j = 0; j < getNumberOfDecks(); j++) {
+ for (int i = 0; i < 52; i++) {
+ cards[i+j*52] = newCard( (eValue)((i % 13) + 1), (eSuit)((i / 13) + 1), FALSE);
+ cards[i+j*52]->setDeckNumber(j);
+ }
+ }
for (int i = 0; i < getNumberOfJokers(); i++)
- cards[52 + i] = newCard( jokerVal, jokerSuit, FALSE );
+ cards[52*getNumberOfDecks() + i] = newCard( jokerVal, jokerSuit, FALSE);
deckCreated = TRUE;
}
}
void CardDeck::shuffle()
@@ -60,22 +64,28 @@ void CardDeck::shuffle()
}
}
int CardDeck::getNumberOfCards()
{
- return 52 + getNumberOfJokers();
+ return 52*getNumberOfDecks() + getNumberOfJokers();
}
+int CardDeck::getNumberOfDecks()
+{
+ return numberOfDecks;
+}
+
+
int CardDeck::getNumberOfJokers()
{
return numberOfJokers;
}
-Card *CardDeck::newCard( eValue v, eSuit s, bool f )
+Card *CardDeck::newCard( eValue v, eSuit s, bool f)
{
return new Card(v, s, f);
}