Ejemplo n.º 1
0
uint32_t getHandValue(uint8_t * const hand) {
    orderHand(hand);
    if(isStraightFlush(hand)) return 8;
    if(isXOfKind(hand,4)    ) return 7;
    if(isFullHouse(hand)    ) return 6;
    if(isFlush(hand)        ) return 5;
    if(isStraight(hand)     ) return 4;
    if(isXOfKind(hand,3)    ) return 3;
    if(isTwoPair(hand)      ) return 2;
    if(isXOfKind(hand,2)    ) return 1;
    return 0;
}
Ejemplo n.º 2
0
/* Adrian Hernandez */
void rankHand(Hand *hand){
    
    cardrank tieBreaker;
    handrank hrank = HIGH_CARD;
    
    if ((tieBreaker = isStraightFlush(hand -> cards)) != NIL) {
        hrank = STRAIGHT_FLUSH;
    }
    else if ((tieBreaker = isFourKind(hand -> cards)) != NIL){
        hrank = FOUR_KIND;
    }
    else if((tieBreaker = isFullHouse(hand -> cards)) != NIL){
        hrank = FULL_HOUSE;
    }
    else if((tieBreaker = isFlush(hand -> cards)) != NIL){
        hrank = FLUSH;
    }
    else if((tieBreaker = isStraight(hand -> cards)) != NIL){
        hrank = STRAIGHT;
    }
    else if((tieBreaker = isThreeOfAKind(hand -> cards)) != NIL){
        hrank = THREE_KIND;
    }
    else if((tieBreaker = isTwoPair(hand -> cards)) != NIL){
        hrank = TWO_PAIR;
    }
    else if((tieBreaker = isOnePair(hand -> cards, NIL)) != NIL){
        hrank = ONE_PAIR;
    }
    else {
        /* high card */
        cardrank lowCard  = (hand -> cards[0]) -> rank;
        cardrank highCard = (hand -> cards[POKER_HAND - 1]) -> rank;
        
        /* since ACE could be at the beginning */
        tieBreaker = max(lowCard, highCard);
    }
    
    hand -> rank       = hrank;
    hand -> tieBreaker = tieBreaker;
}
Ejemplo n.º 3
0
int score(const std::vector<std::string>& vec)
{
	if (isRoyalFlush(vec))
		return 900;
	if (isStraightFlush(vec))
		return 800 + getHighCard(vec);
	if (isFourCard(vec))
		return 700 + getHighCard(vec, 4);
	if (isFullHouse(vec))
		return 600 + getHighCard(vec, 3);
	if (isFlush(vec))
		return 500 + getHighCard(vec);
	if (isStraight(vec))
		return 400 + getHighCard(vec);
	if (isThreeCard(vec))
		return 300 + getHighCard(vec, 3);
	if (isTwoPair(vec))
		return 200 + getHighCard(vec, 2);
	if (isOnePair(vec))
		return 100 + getHighCard(vec, 1);
	return getHighCard(vec);
}
Ejemplo n.º 4
0
Comb::Combs Comb::getComb(const QStringList & cards) const
{
   if (isStraightFlash(cards))
   {
      return Comb::StraightFlash;
   }
   if (isCare(cards))
   {
      return Comb::Care;
   }
   if (isFullHouse(cards))
   {
      return Comb::FullHouse;
   }
   if (isFlash(cards))
   {
      return Comb::Flash;
   }
   if (isStraight(cards))
   {
      return Comb::Straight;
   }
   if (isThreeOfKind(cards))
   {
      return Comb::ThreeOfKind;
   }
   if (isTwoPair(cards))
   {
      return Comb::TwoPair;
   }
   if (isPair(cards))
   {
      return Comb::Pair;
   }

   return Comb::Trash;
}
Ejemplo n.º 5
0
PokerHand Hand::rank() const
{
     if (isRoyalFlush())
         return PokerHand::ROYAL_FLUSH;
     if (isStraightFlush())
         return PokerHand::STRAIGHT_FLUSH;
     if (isFourOfAKind())
         return PokerHand::FOUR_OF_A_KIND;
     if (isFullHouse())
         return PokerHand::FULL_HOUSE;
     if (isFlush())
         return PokerHand::FLUSH;
     if (isStraight())
         return PokerHand::STRAIGHT;
     if (isThreeOfAKind())
         return PokerHand::THREE_OF_A_KIND;
     if (isTwoPair())
         return PokerHand::TWO_PAIR;
     if (isJacksOrBetter())
         return PokerHand::JACKS_OR_BETTER;


    return PokerHand::NADA;
}
Ejemplo n.º 6
0
bool isFullHouse(const std::vector<std::string>& vec)
{
	if (isTwoPair(vec) && isThreeCard(vec))
		return true;
	return false;
}