double imp_score_straight_flush(Hand *hand){ if(imp_score_flush(hand) > 0 && imp_score_straight(hand) > 0){ if(card_value(hand->cards[0]) == TWO && card_value(hand->cards[4]) == ACE){ return IMP_STRAIGHT_FLUSH_RANK+card_value(hand->cards[3])/130.0; } else{ return IMP_STRAIGHT_FLUSH_RANK+card_value(hand->cards[4])/130.0; } } else{ return 0; } }
double imp_score_pair(Hand *hand){ if(card_value(hand->cards[0]) == card_value(hand->cards[1]) || card_value(hand->cards[1]) == card_value(hand->cards[2])){ return IMP_PAIR_CLASS+card_value(hand->cards[1])/13.0; } else if(card_value(hand->cards[2]) == card_value(hand->cards[3]) || card_value(hand->cards[3]) == card_value(hand->cards[4])){ return IMP_PAIR_CLASS+card_value(hand->cards[3])/13.0; } else{ return 0; } }
double imp_score_full_house(Hand *hand){ if(card_value(hand->cards[0]) == card_value(hand->cards[1]) && card_value(hand->cards[3]) == card_value(hand->cards[4]) && (card_value(hand->cards[0]) == card_value(hand->cards[2]) || card_value(hand->cards[4]) == card_value(hand->cards[2]))){ return IMP_FULL_HOUSE_CLASS+card_value(hand->cards[2])/130.0; } else{ return 0; } }
double imp_score_two_pair(Hand *hand){ if((card_value(hand->cards[0]) == card_value(hand->cards[1]) || card_value(hand->cards[1]) == card_value(hand->cards[2])) && (card_value(hand->cards[2]) == card_value(hand->cards[3]) || card_value(hand->cards[3]) == card_value(hand->cards[4]))){ return IMP_TWO_PAIR_CLASS+card_value(hand->cards[3])/26.0; } else{ return 0; } }
int main4(){ try{ card c1(card_value(12)); card_value cv21(21); card c2(cv21); bool isSame = c1.is_same(c2); std::cout << "c1 si_same c2 " << std::boolalpha << isSame << "\n"; card cIn(std::cin); std::cout << c1.get_value(); c1.send_to(std::cout); std::cout << "std::cout << " << c1; std::cout << "std::cout << " << c2; card c3(card_value::four, card_value::spade); } catch(...){ std::cerr << "An exception has been thrown.\n"; } return 0; }
double imp_score_flush(Hand *hand){ if(card_suit(hand->cards[0]) == card_suit(hand->cards[1]) && card_suit(hand->cards[0]) == card_suit(hand->cards[2]) && card_suit(hand->cards[0]) == card_suit(hand->cards[3]) && card_suit(hand->cards[0]) == card_suit(hand->cards[4])){ return IMP_FLUSH_CLASS+card_value(hand->cards[4])/130.0; } else{ return 0; } }
/* input: a dealer pointer, a shoe pointer * output: various dealer info * return: an int with the first cards value * comments: starts the dealer and shows the first card */ int dealer_start(dealer * foo, shoe * bar) { int i; int rval = 0; card tmp; for (i = 0; i < 2; ++i) { card_init(&tmp); tmp = deal_card(bar); hand_enq(&foo->one, tmp); ++foo->cnt; foo->value += card_value(&tmp); if (i == 0) { fdprintf(OUT, "Dealer shows : "); card_print(&tmp); rval = card_value(&tmp); fdprintf(OUT, "\n"); } } return rval; }
/* Takes user input, checks value of card, updates the count and repeats until the user inputs X*/ void card_loop() { char card[3]; int val = 0; int count = 0; while(card[0] != 'X') { getinput(card); val = card_value(card); if (check_valid_value(val)){ puts("I don't understand that value!"); } else { print_value(val); update_count(val,&count); } } }
int hand_value(struct Player* player) { int ace_count, cvalue, hvalue, i; ace_count = 0; hvalue = 0; for (i = 0; i < HAND_SIZE; i++) { if ((*player).hand[i] == 0) { break; } cvalue = card_value((*player).hand[i]); if (cvalue == 1) { ace_count++; } else { hvalue += cvalue; } } for (i = 0; i < ace_count; i++) { if (hvalue + ACE_MAX > MAX_SCORE) { hvalue += ACE_MIN; } else { hvalue += ACE_MAX; } } return hvalue; }
deck::deck():position(0){ for(int i(0); i != cards; ++i){ pack[i] = card_value(i); } }
double imp_score_straight(Hand *hand){ if(card_value(hand->cards[0]) == card_value(hand->cards[1])-1 && card_value(hand->cards[0]) == card_value(hand->cards[2])-2 && card_value(hand->cards[0]) == card_value(hand->cards[3])-3){ if(card_value(hand->cards[0]) == card_value(hand->cards[4])-4){ return IMP_STRAIGHT_CLASS+card_value(hand->cards[4])/130.0; } else if(card_value(hand->cards[0]) == TWO && card_value(hand->cards[4]) == ACE){ return IMP_STRAIGHT_CLASS+card_value(hand->cards[3])/130.0; } else{ return 0; } } else{ return 0; } }
double imp_score_four_of_a_kind(Hand *hand){ if((card_value(hand->cards[0]) == card_value(hand->cards[1]) && card_value(hand->cards[0]) == card_value(hand->cards[2]) && card_value(hand->cards[0]) == card_value(hand->cards[3])) || (card_value(hand->cards[1]) == card_value(hand->cards[2]) && card_value(hand->cards[1]) == card_value(hand->cards[3]) && card_value(hand->cards[1]) == card_value(hand->cards[4]))){ return IMP_FOUR_OF_A_KIND_CLASS+card_value(hand->cards[2])/130.0; } else{ return 0; } }
double imp_score_high_card(Hand *hand){ return IMP_HIGH_CARD_CLASS+card_value(hand->cards[4])/130.0; }