#include <vector>
#include <iostream>
#include <iomanip>
#include <string>
#include <time.h>
using namespace std;
class Deck
{
private:
vector<int> deck;
int size;
void pop_off(int);
public:
void setSize(int s){ size = s; }
int getSize(){ return size; }
void setDeck();
int drawRandomCard();
int drawSpecificCard(int);
};
void Deck::pop_off(int index)
{
int temp;
temp = deck[deck.size() - 1];
deck[deck.size() - 1] = deck[index];
deck[index] = temp;
deck.pop_back();
}
void Deck::setDeck()
{
for (int i = 0; i < size; i++)
deck.push_back(i);
}
int Deck::drawRandomCard()
{
int rindex, rcard;
rindex = rand() % deck.size();
rcard = deck[rindex];
pop_off(rindex);
return rcard;
}
int Deck::drawSpecificCard(int index)
{
int card;
card = deck[index];
pop_off(index);
return card;
}
class Card
{
protected:
int value;
string face;
string suit;
public:
void setCard(int);
int getCardValue(){ return value; }
string getCardFace(){ return face; }
string getCardSuit(){ return suit; }
bool getCardSide();
void turnCard();
};
void Card::setCard(int index)
{
int cardValue[13] = { 2, 3, 4, 5, 6, 7, 8, 9, 0, 10, 10, 10, 1 };
value = cardValue[index % 13];
string cardFace[13] = { "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine", "Ten", "Jack", "Queen", "King", "Ace" };
face = cardFace[index % 13];
string cardSuit[4] = { " of Hearts", " of Clubs", " of Diamonds", " of Spades" };
if (index <= 12) { suit = cardSuit[0];}
else if (index <= 25) { suit = cardSuit[1];}
else if (index <= 38) { suit = cardSuit[2];}
else if (index <= 51) { suit = cardSuit[3];}
}
class Player
{
private:
string name;
int money;
Card hand [3];
static int playerNumber;
public:
Player(){ playerNumber++; }
void setName(string n){ name = n; }
string getName(){ return name; }
void setMoney(int m){ money = m; }
int getMoney(){ return money; }
void setHand(Card [],Deck);
Card* getHand();
int handValue();
};
int Player::playerNumber = 0;
void Player::setHand(Card cards[],Deck deck)
{
for (int i = 0; i < 3; i++)
{
cards[i].setCard(deck.drawRandomCard());
hand[i] = cards[i];
}
}
Card* Player::getHand()
{
return hand;
}
void names(Player& player, Player& house);
int betting(Player player, Player house, int&);
int dealing(Player player, Player house);
int whoWins(Player player, Player house);
void main()
{
srand(unsigned(time(0)));
Card cards[3];
Card* ptr;
Deck deck;
Player house;
Player player;
int howMuch = 0;
names(player, house);
if (betting(player, house, howMuch) == 1)
{
player.setHand(cards,deck);
ptr = player.getHand();
}
for (int i = 0; i < 3; i++)
{
cout << ptr[i].getCardFace() << ptr[i].getCardSuit();
}
// playercards.setCard(halfDeck.drawRandomCard());
// cout << playercards.getCardFace() << playercards.getCardSuit() << endl;
}
void names(Player& player, Player& house)
{
string name;
int money;
cout << "What is your name?: ";
getline(cin, name);
player.setName(name);
cout << "How much money do you have to gamble with: ";
cin >> money;
player.setMoney(money);
house.setName("House");
house.setMoney(money + 1);
}
int betting(Player player, Player house, int& howMuch)
{
cout << "How much would you like do bet?: ";
cin >> howMuch;
while (howMuch > player.getMoney())
{
cout << "You do not have that much. Try Again. How much would you like do bet?: ";
cin >> howMuch;
}
if (howMuch == 0)
{
cout << " You cannot bet 0 sorry";
return 0;
}
else 1;
}
I2luY2x1ZGUgPHZlY3Rvcj4KI2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8aW9tYW5pcD4KI2luY2x1ZGUgPHN0cmluZz4KI2luY2x1ZGUgPHRpbWUuaD4KCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgoKY2xhc3MgRGVjawp7CnByaXZhdGU6CiB2ZWN0b3I8aW50PiBkZWNrOwogaW50IHNpemU7CiB2b2lkIHBvcF9vZmYoaW50KTsKcHVibGljOgogdm9pZCBzZXRTaXplKGludCBzKXsgc2l6ZSA9IHM7IH0KIGludCBnZXRTaXplKCl7IHJldHVybiBzaXplOyB9CiB2b2lkIHNldERlY2soKTsKIGludCBkcmF3UmFuZG9tQ2FyZCgpOwogaW50IGRyYXdTcGVjaWZpY0NhcmQoaW50KTsKfTsKCnZvaWQgRGVjazo6cG9wX29mZihpbnQgaW5kZXgpCnsKIGludCB0ZW1wOwogdGVtcCA9IGRlY2tbZGVjay5zaXplKCkgLSAxXTsKIGRlY2tbZGVjay5zaXplKCkgLSAxXSA9IGRlY2tbaW5kZXhdOwogZGVja1tpbmRleF0gPSB0ZW1wOwogZGVjay5wb3BfYmFjaygpOwp9CnZvaWQgRGVjazo6c2V0RGVjaygpCnsKIGZvciAoaW50IGkgPSAwOyBpIDwgc2l6ZTsgaSsrKQogIGRlY2sucHVzaF9iYWNrKGkpOwp9CmludCBEZWNrOjpkcmF3UmFuZG9tQ2FyZCgpCnsKIGludCByaW5kZXgsIHJjYXJkOwoKIHJpbmRleCA9IHJhbmQoKSAlIGRlY2suc2l6ZSgpOwogcmNhcmQgPSBkZWNrW3JpbmRleF07CiBwb3Bfb2ZmKHJpbmRleCk7CgogcmV0dXJuIHJjYXJkOwp9CmludCBEZWNrOjpkcmF3U3BlY2lmaWNDYXJkKGludCBpbmRleCkKewogaW50IGNhcmQ7CiBjYXJkID0gZGVja1tpbmRleF07CiBwb3Bfb2ZmKGluZGV4KTsKCiByZXR1cm4gY2FyZDsKfQoKCmNsYXNzIENhcmQKewpwcm90ZWN0ZWQ6CiBpbnQgdmFsdWU7CiBzdHJpbmcgZmFjZTsKIHN0cmluZyBzdWl0OwpwdWJsaWM6IAogdm9pZCBzZXRDYXJkKGludCk7CiBpbnQgZ2V0Q2FyZFZhbHVlKCl7IHJldHVybiB2YWx1ZTsgfQogc3RyaW5nIGdldENhcmRGYWNlKCl7IHJldHVybiBmYWNlOyB9CiBzdHJpbmcgZ2V0Q2FyZFN1aXQoKXsgcmV0dXJuIHN1aXQ7IH0KIGJvb2wgZ2V0Q2FyZFNpZGUoKTsgCiB2b2lkIHR1cm5DYXJkKCk7Cn07Cgp2b2lkIENhcmQ6OnNldENhcmQoaW50IGluZGV4KQp7CiBpbnQgY2FyZFZhbHVlWzEzXSA9IHsgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMCwgMTAsIDEwLCAxMCwgMSB9OwogdmFsdWUgPSBjYXJkVmFsdWVbaW5kZXggJSAxM107Cgogc3RyaW5nIGNhcmRGYWNlWzEzXSA9IHsgIlR3byIsICJUaHJlZSIsICJGb3VyIiwgIkZpdmUiLCAiU2l4IiwgIlNldmVuIiwgIkVpZ2h0IiwgIk5pbmUiLCAiVGVuIiwgIkphY2siLCAiUXVlZW4iLCAiS2luZyIsICJBY2UiIH07CiBmYWNlID0gY2FyZEZhY2VbaW5kZXggJSAxM107Cgogc3RyaW5nIGNhcmRTdWl0WzRdID0geyAiIG9mIEhlYXJ0cyIsICIgb2YgQ2x1YnMiLCAiIG9mIERpYW1vbmRzIiwgIiBvZiBTcGFkZXMiIH07CiAgIGlmIChpbmRleCA8PSAxMikgeyBzdWl0ID0gY2FyZFN1aXRbMF07fQogZWxzZSBpZiAoaW5kZXggPD0gMjUpIHsgc3VpdCA9IGNhcmRTdWl0WzFdO30KIGVsc2UgaWYgKGluZGV4IDw9IDM4KSB7IHN1aXQgPSBjYXJkU3VpdFsyXTt9CiBlbHNlIGlmIChpbmRleCA8PSA1MSkgeyBzdWl0ID0gY2FyZFN1aXRbM107fQp9CgoKY2xhc3MgUGxheWVyCnsKcHJpdmF0ZTogCiBzdHJpbmcgbmFtZTsKIGludCBtb25leTsKIENhcmQgaGFuZCBbM107CiBzdGF0aWMgaW50IHBsYXllck51bWJlcjsKcHVibGljOgogUGxheWVyKCl7IHBsYXllck51bWJlcisrOyB9CiB2b2lkIHNldE5hbWUoc3RyaW5nIG4peyBuYW1lID0gbjsgfQogc3RyaW5nIGdldE5hbWUoKXsgcmV0dXJuIG5hbWU7IH0KIHZvaWQgc2V0TW9uZXkoaW50IG0peyBtb25leSA9IG07IH0KIGludCBnZXRNb25leSgpeyByZXR1cm4gbW9uZXk7IH0KIHZvaWQgc2V0SGFuZChDYXJkIFtdLERlY2spOwogQ2FyZCogZ2V0SGFuZCgpOwogaW50IGhhbmRWYWx1ZSgpOwp9OwppbnQgUGxheWVyOjpwbGF5ZXJOdW1iZXIgPSAwOwp2b2lkIFBsYXllcjo6c2V0SGFuZChDYXJkIGNhcmRzW10sRGVjayBkZWNrKQp7CiBmb3IgKGludCBpID0gMDsgaSA8IDM7IGkrKykKIHsKICBjYXJkc1tpXS5zZXRDYXJkKGRlY2suZHJhd1JhbmRvbUNhcmQoKSk7CiAgaGFuZFtpXSA9IGNhcmRzW2ldOwogfQp9CkNhcmQqIFBsYXllcjo6Z2V0SGFuZCgpCnsKICAgIHJldHVybiBoYW5kOwp9Cgp2b2lkIG5hbWVzKFBsYXllciYgcGxheWVyLCBQbGF5ZXImIGhvdXNlKTsKaW50IGJldHRpbmcoUGxheWVyIHBsYXllciwgUGxheWVyIGhvdXNlLCBpbnQmKTsKaW50IGRlYWxpbmcoUGxheWVyIHBsYXllciwgUGxheWVyIGhvdXNlKTsKaW50IHdob1dpbnMoUGxheWVyIHBsYXllciwgUGxheWVyIGhvdXNlKTsKCnZvaWQgbWFpbigpCnsKIHNyYW5kKHVuc2lnbmVkKHRpbWUoMCkpKTsKIENhcmQgY2FyZHNbM107CiBDYXJkKiBwdHI7CiBEZWNrIGRlY2s7CiBQbGF5ZXIgaG91c2U7CiBQbGF5ZXIgcGxheWVyOwogaW50IGhvd011Y2ggPSAwOwoKCiBuYW1lcyhwbGF5ZXIsIGhvdXNlKTsKCgogaWYgKGJldHRpbmcocGxheWVyLCBob3VzZSwgaG93TXVjaCkgPT0gMSkKIHsKICBwbGF5ZXIuc2V0SGFuZChjYXJkcyxkZWNrKTsKICBwdHIgPSBwbGF5ZXIuZ2V0SGFuZCgpOwogfQogZm9yIChpbnQgaSA9IDA7IGkgPCAzOyBpKyspCiB7CiAgY291dCA8PCBwdHJbaV0uZ2V0Q2FyZEZhY2UoKSA8PCBwdHJbaV0uZ2V0Q2FyZFN1aXQoKTsKIH0KIC8vIHBsYXllcmNhcmRzLnNldENhcmQoaGFsZkRlY2suZHJhd1JhbmRvbUNhcmQoKSk7CiAvLyBjb3V0IDw8IHBsYXllcmNhcmRzLmdldENhcmRGYWNlKCkgPDwgcGxheWVyY2FyZHMuZ2V0Q2FyZFN1aXQoKSA8PCBlbmRsOwogCn0KCnZvaWQgbmFtZXMoUGxheWVyJiBwbGF5ZXIsIFBsYXllciYgaG91c2UpCnsKIHN0cmluZyBuYW1lOwogaW50IG1vbmV5OwogCgogY291dCA8PCAiV2hhdCBpcyB5b3VyIG5hbWU/OiAiOwogZ2V0bGluZShjaW4sIG5hbWUpOwogcGxheWVyLnNldE5hbWUobmFtZSk7CgogY291dCA8PCAiSG93IG11Y2ggbW9uZXkgZG8geW91IGhhdmUgdG8gZ2FtYmxlIHdpdGg6ICI7CiBjaW4gPj4gbW9uZXk7CiBwbGF5ZXIuc2V0TW9uZXkobW9uZXkpOwoKIGhvdXNlLnNldE5hbWUoIkhvdXNlIik7CiBob3VzZS5zZXRNb25leShtb25leSArIDEpOwp9CgoKaW50IGJldHRpbmcoUGxheWVyIHBsYXllciwgUGxheWVyIGhvdXNlLCBpbnQmIGhvd011Y2gpCnsKCiAgY291dCA8PCAiSG93IG11Y2ggd291bGQgeW91IGxpa2UgZG8gYmV0PzogIjsKICBjaW4gPj4gaG93TXVjaDsKCiAgd2hpbGUgKGhvd011Y2ggPiBwbGF5ZXIuZ2V0TW9uZXkoKSkKICB7CiAgIGNvdXQgPDwgIllvdSBkbyBub3QgaGF2ZSB0aGF0IG11Y2guIFRyeSBBZ2Fpbi4gSG93IG11Y2ggd291bGQgeW91IGxpa2UgZG8gYmV0PzogIjsKICAgY2luID4+IGhvd011Y2g7CiAgfQoKIGlmIChob3dNdWNoID09IDApCiB7CiAgY291dCA8PCAiIFlvdSBjYW5ub3QgYmV0IDAgc29ycnkiOwogIHJldHVybiAwOwogfQogZWxzZSAxOwp9