#include <iostream>
#include <ctime>
#include <cstdlib>
#include <unordered_map>
using namespace std;
class card{
public:
char face;
string symbol;
void printCard(){
cout << face << " of " << symbol << endl;
}
//void shuffleDeck();
//void printDeck();
};
class deck{
public:
void printDeck();
void shuffleDeck();
};
enum GameState{
HIT = 0,
STAND = 1,
DONE = 3,
};
card cards[52];
card temp;
void deck :: shuffleDeck(){
int n, m;
cout << endl << "Shuffling Deck..." << endl;
for(n=0; n< 52; n++){
m = rand()%52;
temp = cards[n];
cards[n] = cards[m];
cards[m] = temp;
}
cout << "Deck Shuffled." << endl;
}
void deck :: printDeck(){
int k;
cout << endl << endl << "New Deck:" << endl;
for(k=0; k<52; k++){
cards[k].printCard();
}
}
int main()
{
unordered_map<char, int> m = {{'A',1}, {'2',2}, {'3',3}, {'4',4}, {'5',5}, {'6',6}, {'7',7}, {'8',8}, {'9',9}, {'T',10}, {'J',10}, {'Q',10}, {'K',10}};
cout << "NEW Hello, World!\n\n";
char faces[] = {'A', '2', '3', '4', '5', '6', '7', '8', '9', 'T', 'J', 'Q', 'K'};
string symbol[] = {"Hearts", "Diamonds", "Spades", "Clubs"};
int i, j, l;
l=0;
for(i=0; i<4; i++){
for(j=0; j<13; j++){
cards[l].face = faces[j];
cards[l].symbol = symbol[i];
l++;
}
}
deck currDeck;
//currDeck.printDeck();
currDeck.shuffleDeck();
//currDeck.printDeck();
int dealerCount = 0;
int playerCount = 0;
int initBet = 10;
int payOut = 0;
srand(time(0));
int idx = rand()%52;
cout << endl << "Random starting index: " << idx << endl;
playerCount += m[cards[idx].face];
idx = (idx+1)%52;
dealerCount += m[cards[idx].face];
idx = (idx+1)%52;
playerCount += m[cards[idx].face];
idx = (idx+1)%52;
dealerCount += m[cards[idx].face];
idx = (idx+1)%52;
cout << endl << "PRE-CHECKS" << endl;
cout << "Player Count:" << playerCount << "; Dealer Count:" << dealerCount << endl;
if(dealerCount == playerCount && playerCount == 21){
payOut = initBet;
cout << "Player won in a glorious tie with the dealer." << endl;
cout << "Player Count:" << playerCount << "; Dealer Count:" << dealerCount << endl;
return 0;
}
if(dealerCount == 21){
payOut = 0;
cout << "Dealer won" << endl;
cout << "Player Count:" << playerCount << "; Dealer Count:" << dealerCount << endl;
return 0;
}
if(playerCount == 21){
payOut = initBet*1.5;
cout << "Player won" << endl;
cout << "Player Count:" << playerCount << "; Dealer Count:" << dealerCount << endl;
return 0;
}
//GameState currState = userInput();
GameState currState = HIT;
while(currState!=DONE){
cout << endl << "IN-LOOP" << endl;
switch (currState){
case HIT:
playerCount += m[cards[idx].face];
idx = (idx+1)%52;
if(playerCount > 21){
cout << "Dealer won" << endl;
cout << "Player Count:" << playerCount << "; Dealer Count:" << dealerCount << endl;
return 0;
}
//currState = userInput();
currState = STAND;
break;
case STAND:
while(dealerCount <17){
dealerCount += m[cards[idx].face];
idx = (idx+1)%52;
if(dealerCount > 21){
cout << "Player won" << endl;
cout << "Player Count:" << playerCount << "; Dealer Count:" << dealerCount << endl;
return 0;
}
}
currState = DONE;
break;
default:
break;
}
cout << "Player Count:" << playerCount << "; Dealer Count:" << dealerCount << endl;
}
cout << endl << "POST-CHECKS" << endl;
cout << "Player Count:" << playerCount << "; Dealer Count:" << dealerCount << endl;
if(dealerCount == playerCount && playerCount == 21){
payOut = initBet;
cout << "Player won in a glorious tie with the dealer." << endl;
cout << "Player Count:" << playerCount << "; Dealer Count:" << dealerCount << endl;
return 0;
}
if(dealerCount == 21){
payOut = 0;
cout << "Dealer won" << endl;
cout << "Player Count:" << playerCount << "; Dealer Count:" << dealerCount << endl;
return 0;
}
if(playerCount == 21){
payOut = initBet*1.5;
cout << "Player won" << endl;
cout << "Player Count:" << playerCount << "; Dealer Count:" << dealerCount << endl;
return 0;
}
/*deck[0].printCard();
deck[14].printCard();
deck[28].printCard();
deck[51].printCard();*/
return 0;
}
Write, Run & Share C++ code online using OneCompiler's C++ online compiler for free. It's one of the robust, feature-rich online compilers for C++ language, running on the latest version 17. Getting started with the OneCompiler's C++ compiler is simple and pretty fast. The editor shows sample boilerplate code when you choose language as C++ and start coding!
OneCompiler's C++ online compiler supports stdin and users can give inputs to programs using the STDIN textbox under the I/O tab. Following is a sample program which takes name as input and print your name with hello.
#include <iostream>
#include <string>
using namespace std;
int main()
{
string name;
cout << "Enter name:";
getline (cin, name);
cout << "Hello " << name;
return 0;
}
C++ is a widely used middle-level programming language.
When ever you want to perform a set of operations based on a condition If-Else is used.
if(conditional-expression) {
//code
}
else {
//code
}
You can also use if-else for nested Ifs and If-Else-If ladder when multiple conditions are to be performed on a single variable.
Switch is an alternative to If-Else-If ladder.
switch(conditional-expression){
case value1:
// code
break; // optional
case value2:
// code
break; // optional
......
default:
code to be executed when all the above cases are not matched;
}
For loop is used to iterate a set of statements based on a condition.
for(Initialization; Condition; Increment/decrement){
//code
}
While is also used to iterate a set of statements based on a condition. Usually while is preferred when number of iterations are not known in advance.
while (condition) {
// code
}
Do-while is also used to iterate a set of statements based on a condition. It is mostly used when you need to execute the statements atleast once.
do {
// code
} while (condition);
Function is a sub-routine which contains set of statements. Usually functions are written when multiple calls are required to same set of statements which increases re-usuability and modularity. Function gets run only when it is called.
return_type function_name(parameters);
function_name (parameters)
return_type function_name(parameters) {
// code
}