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;
	}
}
Beispiel #5
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;
	}
}
Beispiel #7
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;
}
Beispiel #8
0
/* 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);
		}
	}
}
Beispiel #9
0
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;
}
Beispiel #10
0
deck::deck():position(0){
	for(int i(0); i != cards; ++i){
		pack[i] = card_value(i);
	}
}
Beispiel #11
0
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;
	}
}
Beispiel #12
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;
	}
}
Beispiel #13
0
double imp_score_high_card(Hand *hand){
	return IMP_HIGH_CARD_CLASS+card_value(hand->cards[4])/130.0;
}