#include <iostream>
#include <vector>
#include <ctime>
#include <cstdlib>
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;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8Y3RpbWU+CiNpbmNsdWRlIDxjc3RkbGliPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwogCmNsYXNzIENhcmQKICB7CiAgcHJpdmF0ZToKICAgIGludCB2YWx1ZTsKICAgIHN0cmluZyBuYW1lOwogICAgc3RyaW5nIGNvbG9yOwogIHB1YmxpYzoKICAgIENhcmQoaW50IHYsIHN0cmluZyBuLCBzdHJpbmcgYyk6dmFsdWUodiksbmFtZShuKSxjb2xvcihjKSB7fQogICAgaW50IGdldFZhbHVlKCkKICAgIHsKICAgICAgcmV0dXJuIHZhbHVlOwogICAgfQogICAgc3RyaW5nIGdldE5hbWUoKQogICAgewogICAgICByZXR1cm4gbmFtZTsKICAgIH0KICAgIHN0cmluZyBnZXRDb2xvcigpCiAgICB7CiAgICAgIHJldHVybiBjb2xvcjsKICAgIH0KICAgIGZyaWVuZCBvc3RyZWFtJiBvcGVyYXRvcjw8KG9zdHJlYW0mIHN0cnVtaWVuLCBDYXJkIGMpCiAgICB7CiAgICAgIHN0cnVtaWVuPDxjLmdldE5hbWUoKTw8IiAiPDxjLmdldENvbG9yKCk7CiAgICAgIHJldHVybiBzdHJ1bWllbjsKICAgIH0KICB9OwogCmNsYXNzIFRhbGlhCiAgewogIHByaXZhdGU6CiAgICB2ZWN0b3I8Q2FyZD4gdGFsaWE7CiAgcHVibGljOgogICAgdm9pZCBhZGQoQ2FyZCBjKSAvL2RvZGF3YW5pYSBrYXJ0eSBkbyB0YWxpaQogICAgewogICAgICB0YWxpYS5wdXNoX2JhY2soYyk7CiAgICB9CiAgICBDYXJkIHBvcENhcmQoKSAvL3d5Y2nEhWdhbmllIGthcnR5IHogdGFsaWkKICAgIHsKICAgICAgc3JhbmQodGltZSgwKSk7CiAgICAgIGludCBpbmRleCA9IHJhbmQoKSV0YWxpYS5zaXplKCk7CiAgICAgIENhcmQgdG1wID0gdGFsaWFbaW5kZXhdOwogICAgICB0YWxpYVtpbmRleF0gPSB0YWxpYS5iYWNrKCk7CiAgICAgIHRhbGlhLnBvcF9iYWNrKCk7CiAgICAgIHJldHVybiB0bXA7CiAgICB9CiAgICB2b2lkIGNyZWF0ZUZ1bGwoKQogICAgewogICAgICBzdHJpbmcga29sb3J5WzRdPXsia2llciIsImthcm8iLCJwaWsiLCJ0cmVmbCJ9OwogICAgICBzdHJpbmcgZmlndXJ5WzEzXT17IjIiLCIzIiwiNCIsIjUiLCI2IiwiNyIsIjgiLCI5IiwiMTAiLCJXYWxldCIsIkRhbWEiLCJLcm9sIiwiQXMifTsgLy9tb8W8bmEgYnkgdHUgZGxhIDItMTAgdcW8ecSHIHNzdHJlYW0sIGFsZSBuaWUgY2hjZSBtaWVzemHEhwogICAgICBmb3IgKGludCBpPTA7aTw0O2krKykKICAgICAgICB7CiAgICAgICAgICBmb3IgKGludCBqPTA7ajw5O2orKykgLy8yLTEwCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICBDYXJkIHRtcChqKzIsZmlndXJ5W2pdLGtvbG9yeVtpXSk7IC8vZ2VuZXJ1amVteSBrYXJ0xJkKICAgICAgICAgICAgICB0YWxpYS5wdXNoX2JhY2sodG1wKTsgLy9kb2RhamVteSBkbyB0YWxpaQogICAgICAgICAgICB9CiAgICAgICAgICBmb3IgKGludCBqPTk7ajwxMjtqKyspIC8vd2FsZXQsIGRhbWEsIGtyb2wKICAgICAgICAgICAgewogICAgICAgICAgICAgIENhcmQgdG1wKGotNyxmaWd1cnlbal0sa29sb3J5W2ldKTsgLy9nZW5lcnVqZW15IGthcnTEmQogICAgICAgICAgICAgIHRhbGlhLnB1c2hfYmFjayh0bXApOyAvL2RvZGFqZW15IGRvIHRhbGlpCiAgICAgICAgICAgIH0KICAgICAgICAgIENhcmQgdG1wKDExLGZpZ3VyeVsxMl0sa29sb3J5W2ldKTsgLy9hcwogICAgICAgICAgdGFsaWEucHVzaF9iYWNrKHRtcCk7IC8vZG9kYWplbXkgZG8gdGFsaWkKICAgICAgICB9CiAgICB9CiAgICBpbnQgZ2V0VmFsdWUoKSAvL2Z1bmtjamEgendyYWNhIHdhcnRvxZvEhyB3c3p5c3RraWNoIGthcnQgdyB0YWxpaQogICAgewogICAgICBpbnQgc3VtID0gMDsKICAgICAgZm9yIChpbnQgaSA9MDsgaTx0YWxpYS5zaXplKCk7aSsrKQogICAgICAgIHN1bSs9dGFsaWFbaV0uZ2V0VmFsdWUoKTsKICAgICAgcmV0dXJuIHN1bTsKICAgIH0KICAgIGJvb2wgZW1wdHkoKSBjb25zdAogICAgICB7CiAgICAgICAgcmV0dXJuIHRhbGlhLmVtcHR5KCk7CiAgICAgIH0KICB9OwogCmludCBtYWluKCkKewogIFRhbGlhIHRhbGlhLCBncmFjejEsIGdyYWN6MjsKICB0YWxpYS5jcmVhdGVGdWxsKCk7CiAgLy8gaSBtb8W8ZSByb2JpxIcgbmEgcHJ6eWvFgmFkCiAgZ3JhY3oxLmFkZCh0YWxpYS5wb3BDYXJkKCkpOwogIHJldHVybiAwOwp9