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 92
|
/*
My name is **********
April 9, 2018
This program will play the cardgame War
*/
#include <iostream>
#include <ctime>
#include <algorithm>
#include <vector>
#include <string>
using namespace std;
const char *suitName(unsigned suit)
{
static const char *names[4] { "Hearts", "Clubs", "Spades", "Diamonds" };
return names[suit];
}
class cardType
{
private:
unsigned value;
public:
cardType(unsigned v=0) : value(v) {}
unsigned getsuit() const
{
return value % 4;
}
unsigned getrank() const
{
return value / 4;
}
string name() const;
};
string cardType::name() const
{
static const char *names[] = {
"Ace", "1", "2", "3", "4", "5", "6",
"7", "8", "9", "10", "Jack", "Queen", "King"
};
string result = names[getrank()];
result += " of ";
result += suitName(getsuit());
return result;
}
class Deck {
private:
vector<cardType> cards;
public:
Deck();
cardType deal();
void shuffle() {
random_shuffle(cards.begin(), cards.end());
}
};
Deck::Deck() {
for (unsigned i=0; i<51; ++i) {
cards.push_back(cardType(i));
}
}
cardType Deck::deal() {
cardType result = cards.back();
cards.pop_back();
return result;
}
int
main()
{
Deck deck;
deck.shuffle();
for (unsigned i = 0; i<52; ++i) {
cout << deck.deal().name() << endl;
}
}
|