1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
|
/*
* cardpile.cpp
*
* Notes: This class is inherited multiple of times, so virtual keyword will need
* to be used to avoid making multiple instances of this class and to avoid
* ambiguities.
*
*/
#include "cardpile.h"
/* generates and ranks a deck of 52 cards */
CardPile::CardPile(void) : deckCurrIndex(51), discardPileCurrIndex(0)
{
int i, j;
int k = 0;
string suit[4] = {"C","D","H","S"};
string c[13] = {"A","2","3","4","5","6","7","8","9","T","J","Q","K"};
string tmp;
for (i = 0; i < 4; i++)
for (j = 0; j < 13; j++, k++)
{
tmp = c[j] + suit[i];
deck[k] = new Card(tmp);
deck[k]->rankCard();
}
}
CardPile::~CardPile(void)
{
int i;
for (i = 0; i < 52; i++)
delete deck[i];
}
Card CardPile::getCard(int index)
{
if ((index >= 0) && (index < 52))
return *deck[index];
else
return Card();
}
void CardPile::printPile(void)
{
int i;
for (i = 1; i <= deckCurrIndex + 1; i++)
{
if (deck[i])
cout << deck[i-1]->getType() << " ";
if ( (i % 13) == 0 && i != deckCurrIndex+1)
cout << endl;
}
cout << endl;
}
Card *CardPile::getCardFromDeck(int index)
{
return deck[index];
}
void CardPile::putCardToDeck(int index, Card *card)
{
deck[index] = card;
}
void CardPile::putCardToDiscardPile(Card *card)
{
discardPile[discardPileCurrIndex] = card;
discardPileCurrIndex++;
}
Card *CardPile::PopCardFromDeck(void)
{
if (deckCurrIndex >= 0)
return deck[deckCurrIndex--];
else
{
PRINT_COLOR(ANSI_COLOR_RED, "deck is empty!\n");
return NULL;
}
}
void CardPile::resetDeck(void)
{
deckCurrIndex = 51;
}
|