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.cpp81
1 files changed, 81 insertions, 0 deletions
diff --git a/noncore/games/solitaire/carddeck.cpp b/noncore/games/solitaire/carddeck.cpp
new file mode 100644
index 0000000..87c043a
--- a/dev/null
+++ b/noncore/games/solitaire/carddeck.cpp
@@ -0,0 +1,81 @@
+/**********************************************************************
+** Copyright (C) 2000 Trolltech AS. All rights reserved.
+**
+** This file is part of Qtopia Environment.
+**
+** This file may be distributed and/or modified under the terms of the
+** GNU General Public License version 2 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file.
+**
+** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
+** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+**
+** See http://www.trolltech.com/gpl/ for GPL licensing information.
+**
+** Contact info@trolltech.com if any conditions of this licensing are
+** not clear to you.
+**
+**********************************************************************/
+#include <stdlib.h>
+#include <time.h>
+#include "card.h"
+#include "carddeck.h"
+
+
+CardDeck::CardDeck(int jokers) : numberOfJokers(jokers), deckCreated(FALSE)
+{
+ cards = new (Card *)[getNumberOfCards()];
+}
+
+
+CardDeck::~CardDeck()
+{
+ for (int i = 0; i < getNumberOfCards(); i++)
+ delete cards[i];
+ delete cards;
+}
+
+
+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 i = 0; i < getNumberOfJokers(); i++)
+ cards[52 + i] = newCard( jokerVal, jokerSuit, FALSE );
+ deckCreated = TRUE;
+ }
+}
+
+
+void CardDeck::shuffle()
+{
+ srand(time(NULL));
+ for (int i = 0; i < getNumberOfCards(); i++) {
+ int index = rand() % getNumberOfCards();
+ Card *tmpCard = cards[i];
+ cards[i] = cards[index];
+ cards[index] = tmpCard;
+ }
+}
+
+
+int CardDeck::getNumberOfCards()
+{
+ return 52 + getNumberOfJokers();
+}
+
+
+int CardDeck::getNumberOfJokers()
+{
+ return numberOfJokers;
+}
+
+
+Card *CardDeck::newCard( eValue v, eSuit s, bool f )
+{
+ return new Card(v, s, f);
+}
+
+