// Blackjack Program
// Chris Ray
#include<iostream.h>
#include<math.h>
#include<string.h>
#include<stdlib.h>
#include<time.h>
void getname();
void deal();
void display();
void getplayercard(int);
void getdealercard(int);
void getpcvalue(int);
void getdcvalue(int);
void getpctype(int);
void getdctype(int);
void getpcname(int, int);
void getdcname(int, int);
void playerselect();
void dealerselect();
void playeraction();
void dealeraction();
void getplayerscore();
void getdealerscore();
void endgame();
int counter = 1;
// [Player's Name]
char pname[20] = "";
// [Player/Dealer Cards] (Player/Dealer may have maximum of 5 cards)
int playercard[5] = {0,0,0,0,0};
int dealercard[5] = {0,0,0,0,0};
int playercvalue[5] = {0,0,0,0,0};
int dealercvalue[5] = {0,0,0,0,0};
int playerctype[5] = {0,0,0,0,0};
int dealerctype[5] = {0,0,0,0,0};
char playercname[5][20] = {{""}, {""}, {""}, {""}, {""}};
char dealercname[5][20] = {{""}, {""}, {""}, {""}, {""}};
// [Hit or Miss]
int action = 0;
// [Player/Dealer Stay]
int pstay = 0;
int dstay = 0;
// [Player/Dealer Score]
int pscore = 0;
int playerscore[5] = {0,0,0,0,0};
int dscore = 0;
int dealerscore[5] = {0,0,0,0,0};
// [Game Ending Variable]
int ender = 0;
int blackjack = 0;
void main()
{
getname();
deal();
display();
if(ender == 0)
{
do
{
display();
playerselect();
if(action == 1)
{
playeraction();
}
getplayerscore();
if(pscore == -1)
{
action = 2;
}
}while(action == 1);
action = 0;
do
{
display();
dealerselect();
if(action == 1)
{
dealeraction();
}
getdealerscore();
if(dscore == -1)
{
action = 2;
}
}while(action == 1);
display();
}
endgame();
}
//<><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>
void getname()
{
system("cls");
cout << "Enter your name: ";
cin.getline(pname, 20);
}
//<><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>
void deal()
{
getplayercard(0);
getpcvalue(0);
getpctype(0);
getpcname(playercard[0], 0);
getdealercard(0);
getdcvalue(0);
getdctype(0);
getdcname(dealercard[0], 0);
getplayercard(1);
getpcvalue(1);
getpctype(1);
getpcname(playercard[1], 1);
getdealercard(1);
getdcvalue(1);
getdctype(1);
getdcname(dealercard[1], 1);
getdealerscore();
getplayerscore();
for(int bj = 0; bj < 5; bj++)
{
if(playerscore[bj] == 21 || dealerscore[bj] == 21)
{
blackjack = 1;
ender = 1;
}
}
}
//<><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>
void display()
{
system("cls");
getdealerscore();
getplayerscore();
if(playercard[0] != 0)
cout << "Player Card #1: " << playercname[0] << endl;
if(playercard[1] != 0)
cout << "Player Card #2: " << playercname[1] << endl;
if(playercard[2] != 0)
cout << "Player Card #3: " << playercname[2] << endl;
if(playercard[3] != 0)
cout << "Player Card #4: " << playercname[3] << endl;
if(playercard[4] != 0)
cout << "Player Card #5: " << playercname[4] << endl;
cout << "Player's Score: ";
if(playerscore[0] > 0)
{
cout << playerscore[0];
}
if(playerscore[1] > 0)
{
cout << " (or) " << playerscore[1];
}
if(playerscore[2] > 0)
{
cout << " (or) " << playerscore[2];
}
if(playerscore[3] > 0)
{
cout << " (or) " << playerscore[3];
}
if(playerscore[4] > 0)
{
cout << " (or) " << playerscore[4];
}
if(pscore == -1)
{
cout << "\tBUST" << endl;
}
cout << endl;
cout << endl;
cout << endl;
if(dealercard[0] != 0)
cout << "Dealer Card #1: " << dealercname[0] << endl;
if(dealercard[1] != 0)
cout << "Dealer Card #2: " << dealercname[1] << endl;
if(dealercard[2] != 0)
cout << "Dealer Card #3: " << dealercname[2] << endl;
if(dealercard[3] != 0)
cout << "Dealer Card #4: " << dealercname[3] << endl;
if(dealercard[4] != 0)
cout << "Dealer Card #5: " << dealercname[4] << endl;
cout << "Dealer's Score: ";
if(dealerscore[0] > 0)
{
cout << dealerscore[0];
}
if(dealerscore[1] > 0)
{
cout << " (or) " << dealerscore[1];
}
if(dealerscore[2] > 0)
{
cout << " (or) " << dealerscore[2];
}
if(dealerscore[3] > 0)
{
cout << " (or) " << dealerscore[3];
}
if(dealerscore[4] > 0)
{
cout << " (or) " << dealerscore[4];
}
if(dscore == -1)
{
cout << "\tBUST" << endl;
}
cout << endl;
cout << endl;
cout << endl;
}
//<><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>
void getplayercard(int cardnum1)
{
int shuffle1 = 0;
int match1 = 0;
srand (time(NULL));
do
{
match1 = 0;
shuffle1 = 1 + rand() % 52;
for(int mtest1p = 0; mtest1p < 5; mtest1p++)
{
if(playercard[mtest1p] == shuffle1)
{
match1 = 1;
}
}
for(int mtest1d = 0; mtest1d < 5; mtest1d++)
{
if(dealercard[mtest1d] == shuffle1)
{
match1 = 1;
}
}
} while(match1 != 0);
playercard[cardnum1] = shuffle1;
match1 = 0;
}
//<><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>
void getdealercard(int cardnum2)
{
int shuffle2 = 0;
int match2 = 0;
srand (time(NULL));
do
{
match2 = 0;
shuffle2 = 1 + rand() % 52;
for(int mtest2p = 0; mtest2p < 5; mtest2p++)
{
if(playercard[mtest2p] == shuffle2)
{
match2 = 1;
}
}
for(int mtest2d = 0; mtest2d < 5; mtest2d++)
{
if(dealercard[mtest2d] == shuffle2)
{
match2 = 1;
}
}
} while(match2 != 0);
dealercard[cardnum2] = shuffle2;
match2 = 0;
}
//<><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>
void getpcvalue(int valuenum1)
{
int valuetype1 = playercard[valuenum1] % 13;
if(valuetype1 == 1)
{
playercvalue[valuenum1] = 11;
}
else if(valuetype1 == 0 || valuetype1 >= 10)
{
playercvalue[valuenum1] = 10;
}
else
{
playercvalue[valuenum1] = valuetype1;
}
}
//<//<><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>
void getdcvalue(int valuenum2)
{
int valuetype2 = dealercard[valuenum2] % 13;
if(valuetype2 == 1)
{
dealercvalue[valuenum2] = 11;
}
else if(valuetype2 == 0 || valuetype2 >= 10)
{
dealercvalue[valuenum2] = 10;
}
else
{
dealercvalue[valuenum2] = valuetype2;
}
}
//<><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>
void getpctype(int typenum1)
{
int modtype1 = playercard[typenum1] % 13;
if(modtype1 == 1)
{
playerctype[typenum1] = 1;
}
else
{
playerctype[typenum1] = 0;
}
}
//<><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>
void getdctype(int typenum2)
{
int modtype2 = dealercard[typenum2] % 13;
if(modtype2 == 1)
{
dealerctype[typenum2] = 1;
}
else
{
dealerctype[typenum2] = 0;
}
}
//<><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>
void getpcname(int pncard, int pcnum)
{
char pcname[20];
switch(pncard)
{
// Spades
case 1:
strcpy(pcname, "Ace of Spades");
break;
case 2:
strcpy(pcname, "2 of Spades");
break;
case 3:
strcpy(pcname, "3 of Spades");
break;
case 4:
strcpy(pcname, "4 of Spades");
break;
case 5:
strcpy(pcname, "5 of Spades");
break;
case 6:
strcpy(pcname, "6 of Spades");
break;
case 7:
strcpy(pcname, "7 of Spades");
break;
case 8:
strcpy(pcname, "8 of Spades");
break;
case 9:
strcpy(pcname, "9 of Spades");
break;
case 10:
strcpy(pcname, "10 of Spades");
break;
case 11:
strcpy(pcname, "Jack of Spades");
break;
case 12:
strcpy(pcname, "Queen of Spades");
break;
case 13:
strcpy(pcname, "King of Spades");
break;
// Hearts
case 14:
strcpy(pcname, "Ace of Hearts");
break;
case 15:
strcpy(pcname, "2 of Hearts");
break;
case 16:
strcpy(pcname, "3 of Hearts");
break;
case 17:
strcpy(pcname, "4 of Hearts");
break;
case 18:
strcpy(pcname, "5 of Hearts");
break;
case 19:
strcpy(pcname, "6 of Hearts");
break;
case 20:
strcpy(pcname, "7 of Hearts");
break;
case 21:
strcpy(pcname, "8 of Hearts");
break;
case 22:
strcpy(pcname, "9 of Hearts");
break;
case 23:
strcpy(pcname, "10 of Hearts");
break;
case 24:
strcpy(pcname, "Jack of Hearts");
break;
case 25:
strcpy(pcname, "Queen of Hearts");
break;
case 26:
strcpy(pcname, "King of Hearts");
break;
// Clubs
case 27:
strcpy(pcname, "Ace of Clubs");
break;
case 28:
strcpy(pcname, "2 of Clubs");
break;
case 29:
strcpy(pcname, "3 of Clubs");
break;
case 30:
strcpy(pcname, "4 of Clubs");
break;
case 31:
strcpy(pcname, "5 of Clubs");
break;
case 32:
strcpy(pcname, "6 of Clubs");
break;
case 33:
strcpy(pcname, "7 of Clubs");
break;
case 34:
strcpy(pcname, "8 of Clubs");
break;
case 35:
strcpy(pcname, "9 of Clubs");
break;
case 36:
strcpy(pcname, "10 of Clubs");
break;
case 37:
strcpy(pcname, "Jack of Clubs");
break;
case 38:
strcpy(pcname, "Queen of Clubs");
break;
case 39:
strcpy(pcname, "King of Clubs");
break;
// Diamonds
case 40:
strcpy(pcname, "Ace of Diamonds");
break;
case 41:
strcpy(pcname, "2 of Diamonds");
break;
case 42:
strcpy(pcname, "3 of Diamonds");
break;
case 43:
strcpy(pcname, "4 of Diamonds");
break;
case 44:
strcpy(pcname, "5 of Diamonds");
break;
case 45:
strcpy(pcname, "6 of Diamonds");
break;
case 46:
strcpy(pcname, "7 of Diamonds");
break;
case 47:
strcpy(pcname, "8 of Diamonds");
break;
case 48:
strcpy(pcname, "9 of Diamonds");
break;
case 49:
strcpy(pcname, "10 of Diamonds");
break;
case 50:
strcpy(pcname, "Jack of Diamonds");
break;
case 51:
strcpy(pcname, "Queen of Diamonds");
break;
case 52:
strcpy(pcname, "King of Diamonds");
break;
// Default
default:
strcpy(pcname, "Joker???");
}
for(int alpha = 0; alpha < 20; alpha++)
{
playercname[pcnum][alpha] = pcname[alpha];
}
}
//<><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>
void getdcname(int dncard, int dcnum)
{
char dcname[20];
switch(dncard)
{
// Spades
case 1:
strcpy(dcname, "Ace of Spades");
break;
case 2:
strcpy(dcname, "2 of Spades");
break;
case 3:
strcpy(dcname, "3 of Spades");
break;
case 4:
strcpy(dcname, "4 of Spades");
break;
case 5:
strcpy(dcname, "5 of Spades");
break;
case 6:
strcpy(dcname, "6 of Spades");
break;
case 7:
strcpy(dcname, "7 of Spades");
break;
case 8:
strcpy(dcname, "8 of Spades");
break;
case 9:
strcpy(dcname, "9 of Spades");
break;
case 10:
strcpy(dcname, "10 of Spades");
break;
case 11:
strcpy(dcname, "Jack of Spades");
break;
case 12:
strcpy(dcname, "Queen of Spades");
break;
case 13:
strcpy(dcname, "King of Spades");
break;
// Hearts
case 14:
strcpy(dcname, "Ace of Hearts");
break;
case 15:
strcpy(dcname, "2 of Hearts");
break;
case 16:
strcpy(dcname, "3 of Hearts");
break;
case 17:
strcpy(dcname, "4 of Hearts");
break;
case 18:
strcpy(dcname, "5 of Hearts");
break;
case 19:
strcpy(dcname, "6 of Hearts");
break;
case 20:
strcpy(dcname, "7 of Hearts");
break;
case 21:
strcpy(dcname, "8 of Hearts");
break;
case 22:
strcpy(dcname, "9 of Hearts");
break;
case 23:
strcpy(dcname, "10 of Hearts");
break;
case 24:
strcpy(dcname, "Jack of Hearts");
break;
case 25:
strcpy(dcname, "Queen of Hearts");
break;
case 26:
strcpy(dcname, "King of Hearts");
break;
// Clubs
case 27:
strcpy(dcname, "Ace of Clubs");
break;
case 28:
strcpy(dcname, "2 of Clubs");
break;
case 29:
strcpy(dcname, "3 of Clubs");
break;
case 30:
strcpy(dcname, "4 of Clubs");
break;
case 31:
strcpy(dcname, "5 of Clubs");
break;
case 32:
strcpy(dcname, "6 of Clubs");
break;
case 33:
strcpy(dcname, "7 of Clubs");
break;
case 34:
strcpy(dcname, "8 of Clubs");
break;
case 35:
strcpy(dcname, "9 of Clubs");
break;
case 36:
strcpy(dcname, "10 of Clubs");
break;
case 37:
strcpy(dcname, "Jack of Clubs");
break;
case 38:
strcpy(dcname, "Queen of Clubs");
break;
case 39:
strcpy(dcname, "King of Clubs");
break;
// Diamonds
case 40:
strcpy(dcname, "Ace of Diamonds");
break;
case 41:
strcpy(dcname, "2 of Diamonds");
break;
case 42:
strcpy(dcname, "3 of Diamonds");
break;
case 43:
strcpy(dcname, "4 of Diamonds");
break;
case 44:
strcpy(dcname, "5 of Diamonds");
break;
case 45:
strcpy(dcname, "6 of Diamonds");
break;
case 46:
strcpy(dcname, "7 of Diamonds");
break;
case 47:
strcpy(dcname, "8 of Diamonds");
break;
case 48:
strcpy(dcname, "9 of Diamonds");
break;
case 49:
strcpy(dcname, "10 of Diamonds");
break;
case 50:
strcpy(dcname, "Jack of Diamonds");
break;
case 51:
strcpy(dcname, "Queen of Diamonds");
break;
case 52:
strcpy(dcname, "King of Diamonds");
break;
// Default
default:
strcpy(dcname, "Joker???");
}
for(int beta = 0; beta < 20; beta++)
{
dealercname[dcnum][beta] = dcname[beta];
}
}
//<><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>
void playerselect()
{
action = 0;
int act = 0;
do
{
cout << "Select an action:" << endl;
cout << "1: Hit" << endl;
cout << "2: Stay" << endl;
cin >> action;
if(action == 1)
{
act = 1;
}
else if(action == 2)
{
act = 1;
}
else
{
act = 0;
}
}while(act != 1);
act = 0;
}
//<><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>
void dealerselect()
{
action = 0;
if(dscore < pscore)
{
action = 1;
}
else if(dscore < 16)
{
action = 1;
}
else
{
action = 2;
}
if(dscore == 21 || pscore == -1)
{
action = 2;
}
}
//<><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>
void playeraction()
{
if(playercard[2] == 0)
{
getplayercard(2);
getpcvalue(2);
getpctype(2);
getpcname(playercard[2], 2);
}
else if(playercard[3] == 0)
{
getplayercard(3);
getpcvalue(3);
getpctype(3);
getpcname(playercard[3], 3);
}
else if(playercard[4] == 0)
{
getplayercard(4);
getpcvalue(4);
getpctype(4);
getpcname(playercard[4], 4);
}
}
//<><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>
void dealeraction()
{
if(dealercard[2] == 0)
{
getdealercard(2);
getdcvalue(2);
getdctype(2);
getdcname(dealercard[2], 2);
}
else if(dealercard[3] == 0)
{
getdealercard(3);
getdcvalue(3);
getdctype(3);
getdcname(dealercard[3], 3);
}
else if(dealercard[4] == 0)
{
getdealercard(4);
getdcvalue(4);
getdctype(4);
getdcname(dealercard[4], 4);
}
}
//<><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>
void getplayerscore()
{
int ptype = playerctype[0] + playerctype[1] + playerctype[2] + playerctype[3] + playerctype[4];
pscore = playercvalue[0] + playercvalue[1] + playercvalue[2] + playercvalue[3] + playercvalue[4];
if(ptype >= 1)
{
playerscore[1] = pscore - 10;
}
if(ptype >= 2)
{
playerscore[2] = pscore - 20;
}
if(ptype >= 3)
{
playerscore[3] = pscore - 30;
}
if(ptype >= 4)
{
playerscore[4] = pscore - 40;
}
playerscore[0] = pscore;
if((ptype > 0) && (pscore > 21))
{
pscore = playerscore[1];
}
if((ptype > 1) && (pscore > 21))
{
pscore = playerscore[2];
}
if((ptype > 2) && (pscore > 21))
{
pscore = playerscore[3];
}
if((ptype > 3) && (pscore > 21))
{
pscore = playerscore[4];
}
if(pscore > 21 && ptype == 0)
{
pscore = -1;
}
if(playerscore[1] > 21 && ptype == 1)
{
pscore = -1;
}
if(playerscore[2] > 21 && ptype == 2)
{
pscore = -1;
}
if(playerscore[3] > 21 && ptype == 3)
{
pscore = -1;
}
if(playerscore[4] > 21 && ptype == 4)
{
pscore = -1;
}
}
//<><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>
void getdealerscore()
{
int dtype = dealerctype[0] + dealerctype[1] + dealerctype[2] + dealerctype[3] + dealerctype[4];
dscore = dealercvalue[0] + dealercvalue[1] + dealercvalue[2] + dealercvalue[3] + dealercvalue[4];
if(dtype >= 1)
{
dealerscore[1] = dscore - 10;
}
if(dtype >= 2)
{
dealerscore[2] = dscore - 20;
}
if(dtype >= 3)
{
dealerscore[3] = dscore - 30;
}
if(dtype >= 4)
{
dealerscore[4] = dscore - 40;
}
dealerscore[0] = dscore;
if((dtype > 0) && (dscore > 21))
{
dscore = dealerscore[1];
}
if((dtype > 1) && (dscore > 21))
{
dscore = dealerscore[2];
}
if((dtype > 2) && (dscore > 21))
{
dscore = dealerscore[3];
}
if((dtype > 3) && (dscore > 21))
{
dscore = dealerscore[4];
}
if(dscore > 21 && dtype == 0)
{
dscore = -1;
}
if(dealerscore[1] > 21 && dtype == 1)
{
dscore = -1;
}
if(dealerscore[2] > 21 && dtype == 2)
{
dscore = -1;
}
if(dealerscore[3] > 21 && dtype == 3)
{
dscore = -1;
}
if(dealerscore[4] > 21 && dtype == 4)
{
dscore = -1;
}
}
//<><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>
void endgame()
{
if(blackjack == 1)
{
cout << "Blackjack!!!" << endl;
}
if(pscore > dscore)
{
cout << pname << " wins!" << endl;
}
else if(pscore < 22 && playercard[4] != 0)
{
cout << pname << " wins!" << endl;
}
else
{
cout << "Dealer wins" << endl;
}
cout << endl;
}
Page 1 of 1
Blackjack.cpp (even more pwnage)
Page 1 of 1