//card output.
#include <iostream.h>
char pips_symbol[14] = { '?', 'A', '2', '3', '4',
'5', '6', '7', '8', '9', 'T', 'J', 'Q', 'K' };
char suit_symbol[4] = { 'c', 'd', 'h', 's' };
enum suit { clubs, diamonds, hearts, spades };
class pips {
public:
void assign(int n) { p = n % 13 + 1; }
friend ostream& operator<<(ostream& out, pips x);
private:
int p;
};
class card {
public:
suit s;
pips p;
void assign(int n)
{ cd = n; s = suit(n / 13); p.assign(n); }
friend ostream& operator<<(ostream& out, card cd);
private:
int cd; //a cd is from 0 to 51
};
class deck {
public:
void init_deck();
void shuffle();
void deal(int, int, card*);
void pr_deck();
private:
card d[52];
};
Now let us overload these operators for the types
ostream& operator<<(ostream& out, pips x)
{
return (out << pips_symbol[x.p]);
}
ostream& operator<<(ostream& out, card cd)
{
return (out << cd.p << suit_symbol[cd.s] << " ");
}
void deck::pr_deck()
{
for (int i = 0; i < 52; ++i) {
if (i % 13 == 0) //13 cards to a line
cout << endl;
cout << d[i];
}
}