Can someone fix my blackjack game: and remove the bolded stuff. There are four d
ID: 652631 • Letter: C
Question
Can someone fix my blackjack game: and remove the bolded stuff. There are four decks that get shuffled.
#include #include #include #include using namespace std; const int DECKS = 4; const int SUITS = 4; const int CARDS = 13; const int SWAPS = 1000; const int CHIP_VALUE = 10; struct person { int id; string first_name; int chip; int ticket_number[18]; bool isWithdrawn; }; int swap(int *element1,int *element2) { int temp; temp = *element1; *element1 = *element2; *element2 = temp; return *element1; } int shuffle(int card[]) { int index1,index2,total; int nSwap = SWAPS; total = (DECKS * SUITS * CARDS); while(nSwap--) { index1 = rand()%total; index2 = rand()%total; swap(&card[index1],&card[index2]); } return card[0]; } int takeInput() { int ch; printf(" Hit(0), Pass(1). "); printf("Enter your choice(0-1): "); scanf("%d",&ch); while(ch!=0 && ch!=1) { printf(" Sorry..wrong choice.Enter again: "); scanf("%d",&ch); } } int determineCardInformation(int ticketNumber) { int deck = (ticketNumber / (CARDS * SUITS)) + 1; ticketNumber = ticketNumber % (CARDS * SUITS); int suit = (ticketNumber / (CARDS)) + 1; ticketNumber = ticketNumber % (CARDS); int cardNumber = ticketNumber + 1; return cardNumber; } int main() { int card[208],deck=0,suit=0,cardNumber=0,tickerNumber=0,i,n,j; int numOfPlayers,index,ch,k,indexOfDealer,sum,dealerPoints,card_sum; struct person player[7],dealer[7]; int points[14]; for(i=1;i<=13;i++) { if(i==1) points[i]=11; else if(i>10) points[i]=10; else points[i]=i; } ifstream inFile("player.txt"); if (!inFile.is_open()) { cerr << "Error: opening Player File" << endl; return -1; } for(i=0;i<7;i++) { inFile>>player[i].id>>player[i].first_name>>player[i].chip; player[i].isWithdrawn=true; } ifstream inFile2("dealer.txt"); if (!inFile2.is_open()) { cerr << "Error: opening Dealer File" << endl; return -1; } for(i = 0; i < 7; i++) { inFile2>>dealer[i].id>>dealer[i].first_name>>dealer[i].chip; dealer[i].isWithdrawn=true; } for(i = 0; i < 208; i++) { card[i]=i; } shuffle(card); printf("Enter the number of players: "); scanf("%d",&numOfPlayers); int indexOfPlayers[numOfPlayers],playerPoints[numOfPlayers]; for(i = 0; i < numOfPlayers; i++) { index = rand()%7; if(player[index].isWithdrawn == false) { i--; continue; //player already chosen.. } player[index].isWithdrawn = false; indexOfPlayers[i] = index; } indexOfDealer = rand()%7; //index of dealer; dealer[indexOfDealer].isWithdrawn = false; ///Stage 1 over .....Stage 2 starts... j = -1; for(i = 0; i < numOfPlayers; i++) { player[indexOfPlayers[i]].ticket_number[0] = card[++j]; player[indexOfPlayers[i]].ticket_number[1] = card[++j]; } dealer[indexOfDealer].ticket_number[0] = card[++j]; //Stage 2 over...Stage 3 starts.... for(i = 0; i < numOfPlayers; i++) cout<<" Index: "<= 7) //due to very weird technical glitch... { indexOfPlayers[i] = 0; index = 0; } card_sum = determineCardInformation(player[index].ticket_number[0]); sum = points[card_sum]; card_sum = determineCardInformation(player[index].ticket_number[1]); sum = sum + points[card_sum]; playerPoints[index] = sum; cout<< " Current Player: " << player[index].first_name<< " Points: " << sum << " "; ch = takeInput(); //ask for hit/pass... k = 1; while(ch==0) //Hit = 0 Pass = 1... { player[index].ticket_number[++k] = card[++j]; card_sum = determineCardInformation(player[index].ticket_number[k]); sum = sum + points[card_sum]; playerPoints[index] = sum; if(sum > 21) //bust.. { cout << " Busted at value = " << sum; player[index].isWithdrawn = true; break; } cout << " Current Player Points: " << sum; ch = takeInput(); //ask for hit/pass... } } //done a round of all the players.... cout << " Players round completed..Round of Dealer starting.."; index = indexOfDealer; card_sum = determineCardInformation(dealer[index].ticket_number[0]); sum = points[card_sum]; cout << " Current Dealer: " << dealer[index].first_name << " Points: " << sum << " "; ch = takeInput(); k = 0; while(ch==0) { dealer[index].ticket_number[++k] = card[++j]; card_sum = determineCardInformation(dealer[index].ticket_number[k]); sum = sum + points[card_sum]; dealerPoints = sum; if(sum > 17) //stoppinf dealing to himself.. { if(sum > 21) { cout << " Busted at value = "<< sum; dealer[index].isWithdrawn = true; } else cout <<" Current Dealer Points: "<< sum; break; } cout << " Current Dealer Points: "<< sum; ch = takeInput(); //ask for hit/pass... } //Stage 3 and 4 over....... //Stage5 starts.... for(i = 0; i < numOfPlayers; i++) //calcualting points... { index = indexOfPlayers[i]; if(player[index].isWithdrawn == true) //player is busted { player[index].chip--; dealer[indexOfDealer].chip++; } else //player is not busted... { if(dealer[indexOfDealer].isWithdrawn == true) //dealer busted { player[index].chip++; dealer[indexOfDealer].chip--; continue; } if(playerPoints[index] < dealerPoints) { player[index].chip--; dealer[indexOfDealer].chip++; } else if(playerPoints[index] > dealerPoints) { player[index].chip++; dealer[indexOfDealer].chip--; } } } //Stage 5 ends... cout<<" Blackjack ended..Following are the points "; for(i = 0; i < numOfPlayers; i++) { index = indexOfPlayers[i]; cout <<" Player: " << player[index].first_name << " Points: " << playerPoints[index] << " Chip Count: " << player[index].chip; } cout <<" Dealer: "<< dealer[indexOfDealer].first_name << " Points: "<< dealerPoints << " Chip Count: " << dealer[indexOfDealer].chip; return 0; }
Explanation / Answer
using namespace std; const int DECKS = 4;
const int SUITS = 4; const int CARDS = 13; const int SWAPS = 1000; const int CHIP_VALUE = 10;
struct person
{
int id; string first_name; int chip; int ticket_number[18]; bool isWithdrawn;
};
int swap(int *element1,int *element2)
{ int temp;
temp = *element1;
*element1 = *element2;
*element2 = temp;
return *element1;
}
int shuffle(int card[])
{
int index1,index2,total;
int nSwap = SWAPS;
total = (DECKS * SUITS * CARDS);
while(nSwap--)
{
index1 = rand()%total;
index2 = rand()%total;
swap(&card[index1],&card[index2]);
}
return card[0];
}
int takeInput()
{
int ch;
}
int determineCardInformation(int ticketNumber)
{
int deck = (ticketNumber / (CARDS * SUITS)) + 1;
ticketNumber = ticketNumber % (CARDS * SUITS);
int suit = (ticketNumber / (CARDS)) + 1;
ticketNumber = ticketNumber % (CARDS);
int cardNumber = ticketNumber + 1;
return cardNumber;
}
int main()
{
int card[208],deck=0,suit=0,cardNumber=0,tickerNumber=0,i,n,j;
int numOfPlayers,index,ch,k,indexOfDealer,sum,dealerPoints,card_sum;
struct person player[7],dealer[7];
int points[14];
for(i=1;i<=13;i++)
{
if(i==1)
points[i]=11;
else if(i>10)
points[i]=10;
else points[i]=i;
}
ifstream inFile("player.txt");
if (!inFile.is_open())
{
cerr << "Error: opening Player File" << endl; return -1;
}
for(i=0;i<7;i++)
{ inFile>>player[i].id>>player[i].first_name>>player[i].chip; player[i].isWithdrawn=true; }
ifstream inFile2("dealer.txt"); if (!inFile2.is_open()) { cerr << "Error: opening Dealer File" << endl; return -1; }
for(i = 0; i < 7; i++) { inFile2>>dealer[i].id>>dealer[i].first_name>>dealer[i].chip; dealer[i].isWithdrawn=true; }
for(i = 0; i < 208; i++) { card[i]=i; } shuffle(card);printf("Enter the number of players: ");
scanf("%d",&numOfPlayers); intindexOfPlayers[numOfPlayers],playerPoints[numOfPlayers];
for(i = 0; i < numOfPlayers; i++) { index = rand()%7; if(player[index].isWithdrawn == false) { i--; continue; //player already chosen.. }
player[index].isWithdrawn = false; indexOfPlayers[i] = index; } indexOfDealer = rand()%7; //index of dealer; dealer[indexOfDealer].isWithdrawn = false;
///Stage 1 over .....Stage 2 starts...
j = -1;
for(i = 0; i < numOfPlayers; i++) { player[indexOfPlayers[i]].ticket_number[0] = card[++j]; player[indexOfPlayers[i]].ticket_number[1] = card[++j]; } dealer[indexOfDealer].ticket_number[0] = card[++j]; //Stage 2 over...Stage 3 starts.... for(i = 0; i < numOfPlayers; i++) cout<<" Index: "<= 7) //due to very weird technical glitch... { indexOfPlayers[i] = 0; index = 0; } card_sum = determineCardInformation(player[index].ticket_number[0]); sum = points[card_sum]; card_sum = determineCardInformation(player[index].ticket_number[1]); sum = sum + points[card_sum]; playerPoints[index] = sum; cout<< " Current Player: " << player[index].first_name<< " Points: " << sum << " "; ch = takeInput(); //ask for hit/pass... k = 1; while(ch==0) //Hit = 0 Pass = 1... { player[index].ticket_number[++k] = card[++j];
card_sum = determineCardInformation(player[index].ticket_number[k]); sum = sum + points[card_sum]; playerPoints[index] = sum;
if(sum > 21) //bust.. { cout << " Busted at value = " << sum; player[index].isWithdrawn = true; break; }
cout << " Current Player Points: " << sum; ch = takeInput(); //ask for hit/pass... } } //done a round of all the players....
cout << " Players round completed..Round of Dealer starting.."; index = indexOfDealer; card_sum = determineCardInformation(dealer[index].ticket_number[0]);
sum = points[card_sum]; cout << " Current Dealer: " << dealer[index].first_name << " Points: " << sum << " "; ch = takeInput(); k = 0;
while(ch==0) { dealer[index].ticket_number[++k] = card[++j]; card_sum = determineCardInformation(dealer[index].ticket_number[k]);
sum = sum + points[card_sum]; dealerPoints = sum; if(sum > 17)
//stoppinf dealing to himself.. { if(sum > 21) { cout << " Busted at value = "<< sum; dealer[index].isWithdrawn = true; }
else
cout <<" Current Dealer Points: "<< sum; break; }
cout << " Current Dealer Points: "<< sum; ch = takeInput();
//ask for hit/pass... }
//Stage 3 and 4 over....... //Stage5 starts....
for(i = 0; i < numOfPlayers; i++)
//calcualting points...
{ index = indexOfPlayers[i]; if(player[index].isWithdrawn == true)
//player is busted { player[index].chip--; dealer[indexOfDealer].chip++; }
else //player is not busted... { if(dealer[indexOfDealer].isWithdrawn == true)
//dealer busted { player[index].chip++; dealer[indexOfDealer].chip--; continue; }
if(playerPoints[index] < dealerPoints) { player[index].chip--; dealer[indexOfDealer].chip++; }
else if(playerPoints[index] > dealerPoints) { player[index].chip++; dealer[indexOfDealer].chip--; } } }
//Stage 5 ends...
cout<<" Blackjack ended..Following are the points ";
for(i = 0; i < numOfPlayers; i++)
{
index = indexOfPlayers[i]; cout <<" Player: " << player[index].first_name << " Points: " << playerPoints[index] << " Chip Count: " << player[index].chip;
}
cout <<" Dealer: "<< dealer[indexOfDealer].first_name << " Points: "<< dealerPoints << " Chip Count: " << dealer[indexOfDealer].chip; return 0; }