#include <iostream> #include <string> #include <vector> #include <iterator> #include <algorithm> #include <random> #include <iomanip> using namespace std; /*----------------------------------------------------------------------------*/ class Card { private: short numb; short suit; public: Card(short Numb, short Suit) { numb = Numb; suit = Suit; } short getNumb() const { return numb; } short getSuit() const { return suit; } friend ostream& operator << (ostream&, Card&); }; ostream& operator << (ostream& out, Card& card) { out << card.getNumb() << card.getSuit(); return out; } /*----------------------------------------------------------------------------*/ class Player { private: string username; short numb; short position; vector<Card> hand; double bankroll; public: Player(short Numb) { numb = Numb; bankroll = 100.0; //DEBUG } Player(short Numb, string Username) { numb = Numb; username = Username; bankroll = 100.0; //DEBUG } void setUsername(string Username) { username = Username; } void setNumb(short Numb) { numb = Numb; } void setPosition(short Position) { position = Position; } void setHand(vector<Card> Hand) { hand = Hand; } void setBankroll(double Bankroll) { bankroll = Bankroll; } void setCardToPlayersHand(Card card) { hand.push_back(card); } string getUsername() const { return username; } short getNumb() const { return numb; } short getPosition() const { return position; } vector<Card> getHand() const { return hand; } double getBankroll() const { return bankroll; } }; /*----------------------------------------------------------------------------*/ class Table { protected: vector<Player> players; public: Table() { for(short i = 1; i <= 9; i++) { players.push_back(Player(i)); } short position = 1; for(vector<Player> :: iterator it = players.begin(); it < players.end(); it++) { (*it).setPosition(position); position++; } } vector<Player>& getPlayers() { return players; } /*DEBUG ONLY START*/ void size() { cout << players.size(); } void printingPlayersHands() { for(vector<Player> :: iterator itPlayer = players.begin(); itPlayer < players.end(); itPlayer++) { vector<Card> hand = (*itPlayer).getHand(); for(vector<Card> :: iterator itCard = hand.begin(); itCard < hand.end(); itCard++) { cout << *itCard << '\t'; } cout << '\n'; } } void printingPlayersAll() { cout << "Usernane |" << " Numb |" << " Position |" << " Bankroll |" << " Card 1 |" << " Card 2 |" << '\n'; cout << "---------|------|----------|----------|--------|--------|" << '\n'; for(vector<Player> :: iterator it = players.begin(); it < players.end(); it++) { cout << setw(8) << (*it).getUsername() << " |"; cout << setw(5) << (*it).getNumb() << " |"; cout << setw(9) << (*it).getPosition() << " |"; cout << setw(9) << fixed << setprecision(2) << (*it).getBankroll() << " |"; vector<Card> hand = (*it).getHand(); for(vector<Card> :: iterator itCard = hand.begin(); itCard < hand.end(); itCard++) { cout << setw(6) << *itCard << " |"; } cout << '\n'; } } /*DEBUG ONLY END*/ }; /*----------------------------------------------------------------------------*/ class Hand: public Table { private: vector<Card> cardDeck; vector<Card> table; public: Hand() { for(short i = 1; i<= 4; i++) { for(short j = 2; j <= 13 + 1; j++) { cardDeck.insert(cardDeck.end(), Card(j, i)); } } vector<Player> :: iterator it = players.begin(); short temp = (*it).getPosition(); while(it < (players.end() - 1)) { (*it).setPosition((*(it+1)).getPosition()); it++; } (*it).setPosition(temp); (*it).setBankroll((*it).getBankroll()/2); } void dealToPlayers(short count) { short i = 0; while(i < count) { for(vector<Player> :: iterator it = getPlayers().begin(); it < getPlayers().end(); it++) { (*it).setCardToPlayersHand(cardDeck.front()); cardDeck.erase(cardDeck.begin()); } i++; } printingPlayersHands(); } void dealToTable(short count) { short i = 0; while( i < count) { table.push_back(cardDeck.front()); cardDeck.erase(cardDeck.begin()); i++; } printingTable(); } /*DEBUG ONLY START*/ void printingTable() { for(vector<Card> :: iterator it = table.begin(); it < table.end(); it++) { cout << *it << '\t'; } cout << '\n'; } /*DEBUG ONLY END*/ }; int main() { Hand hand; hand.dealToPlayers(2); cout << '\n' << "OK" << '\n'; // here must be bidding hand.dealToTable(3); cout << '\n' << "OK" << '\n'; // here must be bidding hand.dealToTable(1); cout << '\n' << "OK" << '\n'; // here must be bidding hand.dealToTable(1); cout << '\n' << "OK" << '\n'; // here must be bidding hand.printingPlayersAll(); for(int i = 1; i < 11; i++) { Hand hand_; hand_.dealToPlayers(2); hand_.dealToTable(3); hand_.dealToTable(1); hand_.dealToTable(1); hand.printingPlayersAll(); } return 0; }
Standard input is empty
21 111
31 121
41 131
51 141
61 22
71 32
81 42
91 52
101 62
OK
72 82 92
OK
72 82 92 102
OK
72 82 92 102 112
OK
Usernane | Numb | Position | Bankroll | Card 1 | Card 2 |
---------|------|----------|----------|--------|--------|
| 1 | 2 | 100.00 | 21 | 111 |
| 2 | 3 | 100.00 | 31 | 121 |
| 3 | 4 | 100.00 | 41 | 131 |
| 4 | 5 | 100.00 | 51 | 141 |
| 5 | 6 | 100.00 | 61 | 22 |
| 6 | 7 | 100.00 | 71 | 32 |
| 7 | 8 | 100.00 | 81 | 42 |
| 8 | 9 | 100.00 | 91 | 52 |
| 9 | 1 | 50.00 | 101 | 62 |
21 111
31 121
41 131
51 141
61 22
71 32
81 42
91 52
101 62
72 82 92
72 82 92 102
72 82 92 102 112
Usernane | Numb | Position | Bankroll | Card 1 | Card 2 |
---------|------|----------|----------|--------|--------|
| 1 | 2 | 100.00 | 21 | 111 |
| 2 | 3 | 100.00 | 31 | 121 |
| 3 | 4 | 100.00 | 41 | 131 |
| 4 | 5 | 100.00 | 51 | 141 |
| 5 | 6 | 100.00 | 61 | 22 |
| 6 | 7 | 100.00 | 71 | 32 |
| 7 | 8 | 100.00 | 81 | 42 |
| 8 | 9 | 100.00 | 91 | 52 |
| 9 | 1 | 50.00 | 101 | 62 |
21 111
31 121
41 131
51 141
61 22
71 32
81 42
91 52
101 62
72 82 92
72 82 92 102
72 82 92 102 112
Usernane | Numb | Position | Bankroll | Card 1 | Card 2 |
---------|------|----------|----------|--------|--------|
| 1 | 2 | 100.00 | 21 | 111 |
| 2 | 3 | 100.00 | 31 | 121 |
| 3 | 4 | 100.00 | 41 | 131 |
| 4 | 5 | 100.00 | 51 | 141 |
| 5 | 6 | 100.00 | 61 | 22 |
| 6 | 7 | 100.00 | 71 | 32 |
| 7 | 8 | 100.00 | 81 | 42 |
| 8 | 9 | 100.00 | 91 | 52 |
| 9 | 1 | 50.00 | 101 | 62 |
21 111
31 121
41 131
51 141
61 22
71 32
81 42
91 52
101 62
72 82 92
72 82 92 102
72 82 92 102 112
Usernane | Numb | Position | Bankroll | Card 1 | Card 2 |
---------|------|----------|----------|--------|--------|
| 1 | 2 | 100.00 | 21 | 111 |
| 2 | 3 | 100.00 | 31 | 121 |
| 3 | 4 | 100.00 | 41 | 131 |
| 4 | 5 | 100.00 | 51 | 141 |
| 5 | 6 | 100.00 | 61 | 22 |
| 6 | 7 | 100.00 | 71 | 32 |
| 7 | 8 | 100.00 | 81 | 42 |
| 8 | 9 | 100.00 | 91 | 52 |
| 9 | 1 | 50.00 | 101 | 62 |
21 111
31 121
41 131
51 141
61 22
71 32
81 42
91 52
101 62
72 82 92
72 82 92 102
72 82 92 102 112
Usernane | Numb | Position | Bankroll | Card 1 | Card 2 |
---------|------|----------|----------|--------|--------|
| 1 | 2 | 100.00 | 21 | 111 |
| 2 | 3 | 100.00 | 31 | 121 |
| 3 | 4 | 100.00 | 41 | 131 |
| 4 | 5 | 100.00 | 51 | 141 |
| 5 | 6 | 100.00 | 61 | 22 |
| 6 | 7 | 100.00 | 71 | 32 |
| 7 | 8 | 100.00 | 81 | 42 |
| 8 | 9 | 100.00 | 91 | 52 |
| 9 | 1 | 50.00 | 101 | 62 |
21 111
31 121
41 131
51 141
61 22
71 32
81 42
91 52
101 62
72 82 92
72 82 92 102
72 82 92 102 112
Usernane | Numb | Position | Bankroll | Card 1 | Card 2 |
---------|------|----------|----------|--------|--------|
| 1 | 2 | 100.00 | 21 | 111 |
| 2 | 3 | 100.00 | 31 | 121 |
| 3 | 4 | 100.00 | 41 | 131 |
| 4 | 5 | 100.00 | 51 | 141 |
| 5 | 6 | 100.00 | 61 | 22 |
| 6 | 7 | 100.00 | 71 | 32 |
| 7 | 8 | 100.00 | 81 | 42 |
| 8 | 9 | 100.00 | 91 | 52 |
| 9 | 1 | 50.00 | 101 | 62 |
21 111
31 121
41 131
51 141
61 22
71 32
81 42
91 52
101 62
72 82 92
72 82 92 102
72 82 92 102 112
Usernane | Numb | Position | Bankroll | Card 1 | Card 2 |
---------|------|----------|----------|--------|--------|
| 1 | 2 | 100.00 | 21 | 111 |
| 2 | 3 | 100.00 | 31 | 121 |
| 3 | 4 | 100.00 | 41 | 131 |
| 4 | 5 | 100.00 | 51 | 141 |
| 5 | 6 | 100.00 | 61 | 22 |
| 6 | 7 | 100.00 | 71 | 32 |
| 7 | 8 | 100.00 | 81 | 42 |
| 8 | 9 | 100.00 | 91 | 52 |
| 9 | 1 | 50.00 | 101 | 62 |
21 111
31 121
41 131
51 141
61 22
71 32
81 42
91 52
101 62
72 82 92
72 82 92 102
72 82 92 102 112
Usernane | Numb | Position | Bankroll | Card 1 | Card 2 |
---------|------|----------|----------|--------|--------|
| 1 | 2 | 100.00 | 21 | 111 |
| 2 | 3 | 100.00 | 31 | 121 |
| 3 | 4 | 100.00 | 41 | 131 |
| 4 | 5 | 100.00 | 51 | 141 |
| 5 | 6 | 100.00 | 61 | 22 |
| 6 | 7 | 100.00 | 71 | 32 |
| 7 | 8 | 100.00 | 81 | 42 |
| 8 | 9 | 100.00 | 91 | 52 |
| 9 | 1 | 50.00 | 101 | 62 |
21 111
31 121
41 131
51 141
61 22
71 32
81 42
91 52
101 62
72 82 92
72 82 92 102
72 82 92 102 112
Usernane | Numb | Position | Bankroll | Card 1 | Card 2 |
---------|------|----------|----------|--------|--------|
| 1 | 2 | 100.00 | 21 | 111 |
| 2 | 3 | 100.00 | 31 | 121 |
| 3 | 4 | 100.00 | 41 | 131 |
| 4 | 5 | 100.00 | 51 | 141 |
| 5 | 6 | 100.00 | 61 | 22 |
| 6 | 7 | 100.00 | 71 | 32 |
| 7 | 8 | 100.00 | 81 | 42 |
| 8 | 9 | 100.00 | 91 | 52 |
| 9 | 1 | 50.00 | 101 | 62 |
21 111
31 121
41 131
51 141
61 22
71 32
81 42
91 52
101 62
72 82 92
72 82 92 102
72 82 92 102 112
Usernane | Numb | Position | Bankroll | Card 1 | Card 2 |
---------|------|----------|----------|--------|--------|
| 1 | 2 | 100.00 | 21 | 111 |
| 2 | 3 | 100.00 | 31 | 121 |
| 3 | 4 | 100.00 | 41 | 131 |
| 4 | 5 | 100.00 | 51 | 141 |
| 5 | 6 | 100.00 | 61 | 22 |
| 6 | 7 | 100.00 | 71 | 32 |
| 7 | 8 | 100.00 | 81 | 42 |
| 8 | 9 | 100.00 | 91 | 52 |
| 9 | 1 | 50.00 | 101 | 62 |
21 111
31 121
41 131
51 141
61 22
71 32
81 42
91 52
101 62
72 82 92
72 82 92 102
72 82 92 102 112
Usernane | Numb | Position | Bankroll | Card 1 | Card 2 |
---------|------|----------|----------|--------|--------|
| 1 | 2 | 100.00 | 21 | 111 |
| 2 | 3 | 100.00 | 31 | 121 |
| 3 | 4 | 100.00 | 41 | 131 |
| 4 | 5 | 100.00 | 51 | 141 |
| 5 | 6 | 100.00 | 61 | 22 |
| 6 | 7 | 100.00 | 71 | 32 |
| 7 | 8 | 100.00 | 81 | 42 |
| 8 | 9 | 100.00 | 91 | 52 |
| 9 | 1 | 50.00 | 101 | 62 |