Design the data structures for a generic deck of cards
设计一个扑克牌类,在该设计中,我没有考虑大小王,类的方法只考虑了洗牌和抽牌。
// datastructure.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <iostream>
#include<stack>
#include<string>
#include<vector>
using namespace std;
enum cardcolor {CLUBS,SPADES,HEARTS,DIAMONDS};
struct Suit
{
int color;
int value;
Suit(int scolor, int svalue)
{
color = scolor;
value = svalue;
}
};
class Card
{
private:
vector<Suit> cardarray;
public:
Card();
~Card();
void shuffle();
Suit pickone(int position);
void print();
};
Card::Card()
{
int colornum = 4;
int cardnumpercolor = 13;
for(int i = 0; i < colornum; i++)
{
for(int j = 1; j <= cardnumpercolor;j++)
{
Suit tmpsuit = Suit(i,j);
cardarray.push_back(tmpsuit);
}
}
}
Card::~Card()
{
}
void Card::shuffle()
{
for(int i = 0; i < cardarray.size()-1; i++)
{
int pos = i+rand()%( cardarray.size()-i-1);
swap( cardarray[i], cardarray[pos]);
}
return;
}
Suit Card::pickone(int pos)
{
return cardarray[pos];
}
void Card::print()
{
cout << "(color, value)"<<endl;
for(int i = 0; i < cardarray.size(); i++)
{
cout <<"( " << cardarray[i].color <<", "<< cardarray[i].value << " ); ";
}
cout << endl;
}
int main()
{
Card c;
cout << "original card order is : "<< endl;
c.print();
c.shuffle();
cout << "after shuffle: "<<endl;
c.print();
cout << "pick the first elements: "<<endl;
Suit s = c.pickone(0);
cout <<"("<<s.color<<","<<s.value<<")"<<endl;
system("pause");
return 0;
}