|
ex7-3.cpp - Example 7-3 Inheritance - card and deck classes |
// File: ex7-3.cpp
#include <iostream>
#include <cstdlib>
using namespace std;
char* pips_name[13] = {"two","three","four","five","six","seven","eight",
"nine","ten","jack","queen","king","ace"};
char* suit_name[4] = {"clubs","diamonds","hearts","spades"};
class card
{
private:
int pips;
int suit;
public:
card(void) {}
card(int n) { pips = n % 13; suit = n / 13; }
card(int p, int s) { pips = p; suit = s; }
void print(void) const
{ cout << pips_name[pips] << " of " << suit_name[suit] << endl; }
};
class deck
{
protected:
card* d;
const int num_cards;
public:
deck(int);
~deck();
void shuffle(void);
void print(void) const;
};
deck::deck(int n) : num_cards(n)
{
d = new card[num_cards];
}
deck::~deck()
{
delete [] d;
}
void deck::print(void) const
{
for (int i = 0; i < num_cards; i++) d[i].print(); return;
}
void deck::shuffle(void)
{
cout << "I am shuffling the deck\n";
card temp;
for (int i = 0; i < num_cards; i++)
{
int k = rand() % num_cards;
temp = d[i];
d[i] = d[k];
d[k] = temp;
}
return;
}
class poker_deck : public deck
{
public:
poker_deck(void);
};
poker_deck::poker_deck(void) : deck(52)
{
for (int i = 0; i < num_cards; i++) d[i] = card(i);
}
class pinocle_deck : public deck
{
public:
pinocle_deck(void);
};
pinocle_deck::pinocle_deck(void) : deck(48)
{
for (int i = 0; i < num_cards; i++) d[i] = card(i%6+7,i/2%4);
}
int main(void)
{
poker_deck pd;
pd.print();
pinocle_deck pin;
pin.print();
pin.shuffle();
pd.shuffle();
return 0;
}
CIS27: Programming in C++ Instructor: Joe Bentley