kod użytkownika @shalom, udostępniany na tym forum milion razy..
#include <iostream>
#include <vector>
#include <ctime>
using namespace std;
class Card
{
private:
int value;
string name;
string color;
public:
Card(int v, string n, string c):value(v),name(n),color(c) {}
int getValue()
{
return value;
}
string getName()
{
return name;
}
string getColor()
{
return color;
}
friend ostream& operator<<(ostream& strumien, Card c)
{
strumien<<c.getName()<<" "<<c.getColor();
return strumien;
}
};
class Talia
{
private:
vector<Card> talia;
public:
void add(Card c) //dodawania karty do talii
{
talia.push_back(c);
}
Card popCard() //wyciąganie karty z talii
{
srand(time(0));
int index = rand()%talia.size();
Card tmp = talia[index];
talia[index] = talia.back();
talia.pop_back();
return tmp;
}
void createFull()
{
string kolory[4]={"kier","karo","pik","trefl"};
string figury[13]={"2","3","4","5","6","7","8","9","10","Walet","Dama","Krol","As"}; //można by tu dla 2-10 użyć sstream, ale nie chce mieszać
for (int i=0;i<4;i++)
{
for (int j=0;j<9;j++) //2-10
{
Card tmp(j+2,figury[j],kolory[i]); //generujemy kartę
talia.push_back(tmp); //dodajemy do talii
}
for (int j=9;j<12;j++) //walet, dama, krol
{
Card tmp(j-7,figury[j],kolory[i]); //generujemy kartę
talia.push_back(tmp); //dodajemy do talii
}
Card tmp(11,figury[12],kolory[i]); //as
talia.push_back(tmp); //dodajemy do talii
}
}
int getValue() //funkcja zwraca wartość wszystkich kart w talii
{
int sum = 0;
for (int i =0; i<talia.size();i++)
sum+=talia[i].getValue();
return sum;
}
bool empty() const
{
return talia.empty();
}
};
int main()
{
Talia talia, gracz1, gracz2;
talia.createFull();
// i może robić na przykład
gracz1.add(talia.popCard());
return 0;
}