int score(int color){ int outScore=0; if (outScore==0) { outScore = StraightFlush(color); outScore += (outScore>0?8*15:0); //cout << "os8:" << outScore << endl; } if (outScore==0) { outScore = FourOfAKind(color); outScore += (outScore>0?7*15:0); //cout << "os7:" << outScore << endl; } if (outScore==0) { outScore = FullHouse(color); outScore += (outScore>0?6*15:0); //cout << "os6:" << outScore << endl; } if (outScore==0) { outScore = Flush(color); outScore += (outScore>0?5*15:0); //cout << "os5:" << outScore << endl; } if (outScore==0) { outScore = Straight(color); outScore += (outScore>0?4*15:0); //cout << "os4:" << outScore << endl; } if (outScore==0) { outScore = ThreeOfAKind(color); outScore += (outScore>0?3*15:0); //cout << "os3:" << outScore << endl; } if (outScore==0) { outScore = TwoPair(color); outScore += (outScore>0?2*15:0); //cout << "os2:" << outScore << endl; } if (outScore==0) { outScore = Pair(color); outScore += (outScore>0?1*15:0); //cout << "os1:" << outScore << endl; } if (outScore==0) { outScore = highCard(color); outScore += (outScore>0?0*15:0); //cout << "os0:" << outScore << endl; } return outScore; }
std::vector<Card> Hand::RoyalFlush() { std::vector<Card> cards; if(cards.size() && FindCardByName("Ace", cards) && FindCardByName("King", cards)) return StraightFlush(); else return cards; }
// result renvoie un int significatif de la combinaison de 7 cartes // par exemple 9001 est une quinte flush à l'as, ou 3003 une double paire au 3. int Worker::result(QList<int> list, QList<int> comp, int nComp) { nbHearts = 0; nbSpades = 0; nbClubs = 0; nbDiamonds = 0; listing->clear(); for (int i = 0; i < 14; ++i) listing->append(0); int res; for(QList<int>::iterator it = list.begin(); it != list.end(); ++it) { if (*it / 100 == 3) nbHearts++; else if (*it / 100 == 2) nbDiamonds++; else if (*it / 100 == 1) nbClubs++; else if (*it / 100 == 4) nbSpades++; (*listing)[*it % 100] += 1; } if (nbHearts >= 5) colour = 300; else if (nbSpades >= 5) colour = 400; else if (nbDiamonds >= 5) colour = 200; else if (nbClubs >= 5) colour = 100; else colour = 0; straightBegin = consec(); // Quinte flush if (((straightBegin != 0 && colour != 0) && ((res = StraightFlush(list, straightBegin, colour)) != 0)) || (nComp > 9000)) { if (res > nComp || (res % 1000 == 1 && nComp % 1000 != 14)) return res; else return 0; } // Carré if ((res = Poker()) > 0 || (nComp > 8000)) { if (res > nComp || (res % 1000 == 1 && nComp % 1000 != 14)) return res; else if (res == nComp || (res % 1000 == 1 && nComp % 1000 == 14)) { // Gestion des kickers if (PokerKicker(list, comp, res) == 1) return res; else return 0; } else return 0; } // Full else if ((res = Full()) > 0 || (nComp > 7000)) { if (res > nComp || (res % 1000 == 1 && nComp % 1000 != 14)) return res; else if (res == nComp || (res % 1000 == 1 && nComp % 1000 == 14)) { // Gestion des kickers if (FullKicker(comp, res) == 1) return res; else return 0; } else return 0; } // couleur else if (colour != 0 || (nComp > 6000)) { if (list.contains(colour + 1) == true) res = 6001; else { for (int i = 2; i <= 13; ++i) { if (list.contains(colour + i) == true) res = i + 6000; } } if (res > nComp || (res % 1000 == 1 && nComp % 1000 != 14)) return res; else if (res == nComp || (res % 1000 == 1 && nComp % 1000 == 14)) { // Gestion des kickers if (FlushKicker(list, colour, comp, res) == 1) return res; else return 0; } else return 0; } // suite else if ((res = straightBegin + 5000) != 5000 || (nComp > 5000)) { if (res > nComp || (res == 5001 && res != nComp - 13)) return res; else return 0; } // brelan else if ((res = Threeofakind()) > 0 || (nComp > 4000)) { if (res > nComp|| (res % 1000 == 1 && nComp % 1000 != 14)) return res; else if (res == nComp || (res % 1000 == 1 && nComp % 1000 == 14)) { // Gestion des kickers if (ThreeofakindKicker(list, comp, res) == 1) return res; else return 0; } else return 0; } // double paire else if ((res = Twopairs()) > 0 || (nComp > 3000)) { if (res > nComp|| (res % 1000 == 1 && nComp % 1000 != 14)) return res; else if (res == nComp || (res % 1000 == 1 && nComp % 1000 == 14)) { // Gestion des kickers if (TwopairsKicker(list, comp, res) == 1) return res; else return 0; } else return 0; } // paire else if ((res = Pair()) > 0 || (nComp > 2000)) { if (res > nComp|| (res % 1000 == 1 && nComp % 1000 != 14)) return res; else if (res == nComp || (res % 1000 == 1 && nComp % 1000 == 14)) { // Gestion des kickers if (PairsKicker(list, comp, res) == 1) return res; else return 0; } else return 0; } // carte haute else { if (listing->value(1) > 0) res = 1001; else { for (int i = 13; (listing->value(i) == 0); --i) res = 1000 + i; } if (res > nComp || (res % 1000 == 1 && nComp % 1000 != 14)) return res; else if (res == nComp || (res % 1000 == 1 && nComp % 1000 == 14)) { // Gestion des kickers if (HighcardKicker(list, comp) == 1) return res; else return 0; } else return 0; } }