#include <fstream>
#include <iostream>
#include <random>
using namespace std;
void draw(int playerCard[2], int dealerCard[2], int &playerTotal,
int &dealerTotal, mt19937 &seed) {
uniform_int_distribution<int> card(2, 11);
playerCard[0] = card(seed);
playerCard[1] = card(seed);
if (playerCard[0] == 11 && playerCard[1] == 11) {
playerCard[0] = 1;
}
playerTotal = playerCard[0] + playerCard[1];
dealerCard[0] = card(seed);
dealerCard[1] = card(seed);
if (dealerCard[0] == 11 && dealerCard[1] == 11) {
dealerCard[0] = 1;
}
dealerTotal = dealerCard[0] + dealerCard[1];
}
void action(int playerHit, int &playerTotal, mt19937 &seed, bool &fold,
bool &playerBust, int playerCard[2]) {
int menu = 0;
uniform_int_distribution<int> card(2, 11);
do {
cout << "\nAction : \n 1. Hit \n 2. Fold \n 3. Stay \n";
cin >> menu;
switch (menu) {
case 1:
playerHit = card(seed);
if (playerHit == 11 && playerTotal + 11 > 21) {
playerHit = 1;
}
if (playerCard[0] == 11 && playerTotal + playerHit > 21) {
playerCard[0] = 1;
playerTotal = playerCard[1] + 1;
}
if (playerCard[1] == 11 && playerTotal + playerHit > 21) {
playerCard[1] = 1;
playerTotal = playerCard[0] + 1;
}
playerTotal += playerHit;
cout << "\nYou Hit For " << playerHit << "\nTotal : " << playerTotal
<< "\n";
break;
case 2:
fold = true;
return;
case 3:
return;
default:
cout << "\nInvalid Choice\n";
break;
}
} while (playerTotal < 21);
if (playerTotal > 21) {
playerBust = true;
}
return;
}
int game(int bet = 0) {
int playerCard[2];
int dealerCard[2];
int playerTotal;
int dealerTotal;
int playerHit;
int dealerHit;
bool fold = false;
bool playerBust = false;
bool dealerBust = false;
mt19937 seed(time(NULL));
draw(playerCard, dealerCard, playerTotal, dealerTotal, seed);
cout << "Your Hand : \n"
<< "1. " << playerCard[0] << "\n2. " << playerCard[1]
<< "\nTotal : " << playerTotal << "\nDealer Hand : \n"
<< "1. " << dealerCard[0] << "\n2. \n";
action(playerHit, playerTotal, seed, fold, playerBust, playerCard);
cout << "\nDealer Hand : \n"
<< "1. " << dealerCard[0] << "\n2. " << dealerCard[1]
<< "\nTotal : " << dealerTotal << "\n";
if (!fold && !playerBust) {
while (dealerTotal < 17) {
uniform_int_distribution<int> card(2, 11);
dealerHit = card(seed);
if (dealerHit == 11 && dealerTotal + 11 > 21) {
dealerHit = 1;
}
if (dealerCard[0] == 11 && dealerTotal + dealerHit > 21) {
dealerCard[0] = 1;
dealerTotal = dealerCard[1] + 1;
}
if (dealerCard[1] == 11 && dealerTotal + dealerHit > 21) {
dealerCard[1] = 1;
dealerTotal = dealerCard[1] + 1;
}
dealerTotal += dealerHit;
cout << "\nDealer Hit For " << dealerHit << "\nTotal : " << dealerTotal
<< "\n";
};
if (dealerTotal > 21) {
dealerBust = true;
}
}
if (fold == 1) {
cout << "\nYou Folded\n";
return bet = 0;
} else if (playerBust == 1) {
cout << "\nYou Busted\n";
return bet = 0;
} else if (dealerBust == 1) {
cout << "\nDealer Busted\n";
return bet *= 2;
} else if (dealerTotal > playerTotal) {
cout << "\nDealer Has The Bigger Hand\n";
return bet = 0;
} else if (dealerTotal < playerTotal) {
cout << "\nYou Have The Bigger Hand\n";
return bet *= 2;
} else if (dealerTotal == playerTotal) {
cout << "\nTie\n";
return bet;
}
return 0;
}
int main() {
int menu;
int balance = 1000;
bool hasPlayed = false;
string username = "";
int bet;
ifstream inFile("data.txt");
if (inFile.is_open()) {
inFile >> balance >> hasPlayed >> username;
inFile.close();
cout << "Data Read\n\n";
} else {
cout << "Data Read Failed\n\n";
}
if (hasPlayed == 0) {
cout << "What is Your Name : ";
cin >> username;
hasPlayed = true;
}
do {
cout << "Hi! " << username << "\nMoney Left : " << balance
<< "\n1. QuickPlay (No Bet)\n2. Career\n3. Quit\n";
cin >> menu;
switch (menu) {
case 1:
game();
break;
case 2:
do {
cout << "\nMoney Left : " << balance << "\nInput Bet : ";
cin >> bet;
} while (bet < 0 || bet > balance);
balance = balance - bet;
balance += game(bet);
break;
case 3:
break;
default:
cout << "\nInvalid Choice\n";
}
} while (menu != 3);
ofstream outFile("data.txt");
if (outFile.is_open()) {
outFile << balance << " " << hasPlayed << " " << username;
outFile.close();
cout << "Data Written\n\n";
} else {
cout << "Data Write Failed\n\n";
}
}
1001 1 Crymise