Monday, November 18, 2019

C++ BLACKJACK

#include <iostream>
#include <ctime>
#include <stdlib.h>
#include <time.h>
#include <string>
using namespace std;
int draw_card( int& hand , bool& has_aces , bool& has_elev , string& card_disp );
int final_score( int& hand , bool& has_elev );
int main()
{

srand(time(NULL));
int player_raw_hand = 0, dealer_raw_hand = 0;
int player_final_hand = 0, dealer_final_hand = 0;
bool player_has_aces = false, dealer_has_aces = false;
bool player_has_elev = false, dealer_has_elev = false;
int player_chips = 100, computer_chips = 100;
bool hit;
int card_id;
int suit;
int number;
//strings will be used for displaying hands
string player_string = "";
string dealer_string = "";

//MASTER GAME LOOP
while(player_chips > 0)
{
    player_raw_hand=0;
    player_final_hand=0;
 player_has_aces=false;
 player_has_elev=false;
    dealer_raw_hand=0;
    dealer_final_hand=0;
 dealer_has_aces=false;
 dealer_has_elev=false;

 player_string.clear();
 dealer_string.clear();

    
    draw_card(dealer_raw_hand,dealer_has_aces,dealer_has_elev,dealer_string);
    dealer_final_hand=final_score(dealer_raw_hand,dealer_has_elev);
   
    do
    {
        cout<<"chips: "<<player_chips<<endl;
        cout << "Player Hand: " << player_string << endl;
        cout << "Dealer Hand: " << dealer_string << endl;
        cout<<"player_hand: "<<player_final_hand<<endl;
        cout<<", Computer hand: "<<dealer_final_hand<<endl;
        
        cout<<"hit";
        cin>>hit;
        
        if(hit)
         cout << draw_card(player_raw_hand,player_has_aces,player_has_elev,player_string) << endl;
       
        player_final_hand=final_score(player_raw_hand,player_has_elev);
    }
    while(hit&&player_raw_hand <=21);
   
    draw_card(dealer_raw_hand,dealer_has_aces,dealer_has_elev,dealer_string);
    dealer_final_hand=final_score(dealer_raw_hand,dealer_has_elev);
   
    if (player_final_hand>21)
    {
        cout<<"BUST !"<<endl;
        cout << "Player Hand: " << player_string << endl;
        cout << "Dealer Hand: " << dealer_string << endl;
        cout<<"player_hand: "<<player_final_hand<<endl;
        cout<<", Computer hand: "<<dealer_final_hand<<endl;
        player_chips--;
    }
    else if(player_final_hand >= dealer_final_hand)
    {
        cout<<"You Win !"<<endl;
        cout << "Player Hand: " << player_string << endl;
        cout << "Dealer Hand: " << dealer_string << endl;
        cout<<"player_hand: "<<player_final_hand<<endl;
        cout<<", Computer hand: "<<dealer_final_hand<<endl;
        player_chips++;
    }
    else
    {
        cout<<"lose!"<<endl;
        cout << "Player Hand: " << player_string << endl;
        cout << "Dealer Hand: " << dealer_string << endl;
        cout<<"player_hand: "<<player_final_hand<<endl;
        cout<<", Computer hand: "<<dealer_final_hand<<endl;
        player_chips--;
    }
}  
return 0;
}
int draw_card( int& hand , bool& has_aces , bool& has_elev , string& card_disp )
{
    int card_id;
    int raw_val;
    int card_suit;
    card_id = rand()%52;
    raw_val = card_id%13;
    card_suit = card_id/13; //card suit is 0,1,2, or 3
   
    //spades=0,hearts=1,clubs=2,diamonds=3
   
    switch(raw_val)
    {
      case 0:
       card_disp+="king ";
       break;
      case 1:
       card_disp+="ace ";
       break;
      case 2:
       card_disp+="2 ";
       break;
      case 3:
       card_disp+="3 ";
       break;
      case 4:
       card_disp+="4 ";
       break;
      case 5:
       card_disp+="5 ";
       break;
      case 6:
       card_disp+="6 ";
       break;
      case 7:
       card_disp+="7 ";
       break;
      case 8:
       card_disp+="8 ";
       break;
      case 9:
       card_disp+="9 ";
       break;
      case 10:
       card_disp+="10 ";
       break;
      case 11:
       card_disp+="jack ";
       break;
      case 12:
       card_disp+="queen ";
       break;
     
      default:
       card_disp+="ERROR ";
       break;
   
 }
   
   
   
   
    switch(card_suit)
    {
     case 0:
      card_disp+=" of spades , ";
      break;
     case 1:
      card_disp+=" of hearts , ";
      break;
     case 2:
      card_disp+=" of clubs , ";
      break;
     case 3:
      card_disp+=" of diamonds , ";
      break;
     default:
      card_disp+= " of ERROR , ";
      break;
 }
   
   
   
    if( raw_val == 1 ) //if we draw an ace, then automatically we "have aces"
     has_aces = true;
    
    if(raw_val == 0 || raw_val > 9)
        hand+=10;
    else if(raw_val > 1 && raw_val < 10)
        hand+=raw_val;
    else
        hand++;
       
    if( has_aces && hand+10 <= 21 )
     has_elev = true;
    
    return raw_val;
}
int final_score( int& hand , bool& has_elev )
{
 if( has_elev )
  return hand+10;
 else
  return hand;
}

No comments:

Post a Comment

C++ BLACKJACK

#include <iostream> #include <ctime> #include <stdlib.h> #include <time.h> #include <string> using namesp...