#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 |