-
This should work
Code:
#include <iostream.h>
#include <lvp\random.h>
#include "h:\utility.h"
//-------------------------------------------------------
int dealcard()
{
return(random(10)+1);
}
//-------------------------------------------------------
int printcards(int temp)
{
if(temp==10)
cout<<"J ";
if(temp==11)
cout<<"Q ";
if(temp==12)
cout<<"K ";
if(temp!=10&&temp!=11&&temp!=12)
cout<<temp<<" ";
return temp;
}
//-------------------------------------------------------
int dealuser()
{
char hit;
int numcards=2;
cout<<"Welcome to Black Jack!"<<endl<<endl;
cout<<"Your Cards: ";
int cardcount, card, sumcards=0;
for (cardcount=0; cardcount<numcards; cardcount++)
{
card=dealcard();
sumcards+=card;
printcards(card);
}
start:
cout<<endl<<"Would you like another card (Y/N)?: ";
cin>>hit;
while ((hit!='n')&&(hit!='N'))
{
if((hit!='n')&&(hit!='N'))
{
card=dealcard();
sumcards+=card;
printcards(card);
cout<<"="<<sumcards;
if(sumcards>21)
cout<<" Bust!"<<endl;
if(sumcards>21)
break;
goto start;
}
else
cout<<" ";
}
return(sumcards);
}
//--------------------------------------------------------
int dealcomputer()
{
int numcards=2;
cout<<"Computer Cards: ";
int cardcount, card, sumcards=0;
for (cardcount=0; cardcount<numcards; cardcount++)
{
card=dealcard();
printcards(card);
sumcards+=card;
}
computerhit:
if(sumcards<=17)
{
card=dealcard();
cout<<endl<<"Computer: ";
printcards(card);
sumcards+=card;
}
if(sumcards<=17)
goto computerhit;
else
cout<<" ";
cout<<"="<<sumcards;
if(sumcards>21)
cout<<" BUST!";
return(sumcards);
}
//---------------------------------------------------------
int findwinner(int usersum, int computersum)
{
const int limit=21;
if ((usersum==computersum) || ((usersum>limit)
&& (computersum>limit)))
return(0);
else if ((computersum>limit) || ((usersum>computersum)
&& (usersum<=limit)))
return(1);
else
return(2);
}
//---------------------------------------------------------
void reportresult(int result)
{
if (result==0)
cout<<endl<<"A draw!\n";
else if (result==1)
cout<<endl<<"You win!\n";
else
cout<<endl<<"Computer wins!\n";
}
//---------------------------------------------------------
int playgame()
{
int usersum=dealuser();
int computersum=dealcomputer();
int winner=findwinner(usersum, computersum);
reportresult(winner);
return(winner);
}
//---------------------------------------------------------
void updatecount(int result, int &wins, int &losses, int &draws)
{
if (result==0)
draws++;
else if (result==1)
wins++;
else
losses++;
}
//---------------------------------------------------------
char askrepeat()
{
char answer;
cout<<endl;
cout<<"Would you like to play again? (Y/N)?";
cin>>answer;
while ((answer!='Y')&&(answer!='y')&&(answer!='N')&&(answer!='n'))
{
cout<<"Answer Y or N please: ";
cin>>answer;
cout<<endl;
}
return(answer);
}
//---------------------------------------------------------
void report(int wins, int losses, int draws)
{
cout<<"Your wins = " <<wins<<endl;
cout<<"Computer wins = " <<losses<<endl;
cout<<"Draws = " <<draws<<endl;
}
//---------------------------------------------------------
int main()
{
randomize();
int wins=0, losses=0, draws=0;
char answer;
do{
int result;
result=playgame();
updatecount(result, wins, losses, draws);
answer=askrepeat();
}while((answer!='N')&&(answer!='n'));
report(wins, losses, draws);
return(0);
}