diff --git a/src/engine/local_engine/cardsvalue.cpp b/src/engine/local_engine/cardsvalue.cpp index 00e51e2c..d44f97d7 100755 --- a/src/engine/local_engine/cardsvalue.cpp +++ b/src/engine/local_engine/cardsvalue.cpp @@ -18,8 +18,12 @@ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * ***************************************************************************/ #include "cardsvalue.h" +#include "arraydata.h" +#include "tools.h" +#include "playerinterface.h" -using namespace std; +#include +#include int CardsValue::holeCardsClass(int one, int two) { @@ -629,11 +633,11 @@ int CardsValue::cardsValue(int* cards, int* position) } -vector< vector > CardsValue::calcCardsChance(GameState beRoID, int* playerCards, int* boardCards) +std::vector< std::vector > CardsValue::calcCardsChance(GameState beRoID, int* playerCards, int* boardCards) { int i,j; - vector< vector > chance(2); + std::vector< std::vector > chance(2); chance[0].resize(10); chance[1].resize(10); @@ -706,6 +710,1607 @@ vector< vector > CardsValue::calcCardsChance(GameState beRoID, int* playerC return chance; } +std::string CardsValue::determineHandName(int myCardsValueInt, PlayerList activePlayerList) +{ + + std::list shownCardsValueInt; + std::list sameHandCardsValueInt; + bool different = false; + bool equal = false; +// boost::shared_ptr currentGame = myW->getSession()->getCurrentGame(); + PlayerListConstIterator it_c; +// PlayerList activePlayerList = currentGame->getActivePlayerList(); + + // collect cardsValueInt of all players who will show their cards + for(it_c=activePlayerList->begin(); it_c!=activePlayerList->end(); ++it_c) { + + if( (*it_c)->getMyAction() != PLAYER_ACTION_FOLD) { + shownCardsValueInt.push_back( (*it_c)->getMyCardsValueInt()); + } + } + + // erase own cardsValueInt + std::list::iterator it; + for(it = shownCardsValueInt.begin(); it != shownCardsValueInt.end(); ++it) { + if((*it) == myCardsValueInt) { + shownCardsValueInt.erase(it); + break; + } + } + + std::list cardString = translateCardsValueCode(myCardsValueInt); + std::list::const_iterator cardStringIt_c = cardString.begin(); + + std::string handName; + + switch(myCardsValueInt/100000000) { + // Royal Flush + case 9: { + + handName = *cardStringIt_c; + + } + break; + // Straight Flush + case 8: { + + handName = *cardStringIt_c; + ++cardStringIt_c; + handName += *cardStringIt_c; + + } + break; + // Four of a kind + case 7: { + + handName = *cardStringIt_c; + ++cardStringIt_c; + handName += *cardStringIt_c; + + // same hand detection + for(it = shownCardsValueInt.begin(); it != shownCardsValueInt.end(); ++it) { + if(((*it)/1000000) == (myCardsValueInt/1000000)) { + sameHandCardsValueInt.push_back(*it); + } + } + + // 1.same hands existing + if(!(sameHandCardsValueInt.empty())) { + // first kicker? + for(it = sameHandCardsValueInt.begin(); it != sameHandCardsValueInt.end(); ) { + if(((*it)/10000) == (myCardsValueInt/10000)) { + equal = true; + ++it; + } else { + different = true; + it = sameHandCardsValueInt.erase(it); + } + } + if(different) { + ++cardStringIt_c; + handName += ", fifth card " + *cardStringIt_c; + } + } + } + break; + // Full House + case 6: { + + handName = *cardStringIt_c; + ++cardStringIt_c; + handName += *cardStringIt_c; + ++cardStringIt_c; + handName += *cardStringIt_c; + + } + break; + // Flush + case 5: { + + handName = *cardStringIt_c; + ++cardStringIt_c; + handName += *cardStringIt_c; + + // same hand detection + for(it = shownCardsValueInt.begin(); it != shownCardsValueInt.end(); ++it) { + if(((*it)/1000000) == (myCardsValueInt/1000000)) { + sameHandCardsValueInt.push_back(*it); + } + } + + // 1.same hands existing + if(!(sameHandCardsValueInt.empty())) { + // first kicker? + for(it = sameHandCardsValueInt.begin(); it != sameHandCardsValueInt.end(); ) { + if(((*it)/10000) == (myCardsValueInt/10000)) { + equal = true; + ++it; + } else { + different = true; + it = sameHandCardsValueInt.erase(it); + } + } + if(different) { + ++cardStringIt_c; + handName += ", second card " + *cardStringIt_c; + } + // 2.there are still same hands + if(equal) { + different = false; + equal = false; + // second kicker? + for(it = sameHandCardsValueInt.begin(); it != sameHandCardsValueInt.end(); ) { + if(((*it)/100) == (myCardsValueInt/100)) { + equal = true; + ++it; + } else { + different = true; + it = sameHandCardsValueInt.erase(it); + } + } + if(different) { + ++cardStringIt_c; + handName += ", third card " + *cardStringIt_c; + } + // 3.there are still same hands + if(equal) { + different = false; + equal = false; + // third kicker? + for(it = sameHandCardsValueInt.begin(); it != sameHandCardsValueInt.end(); ) { + if(((*it)/10) == (myCardsValueInt/10)) { + equal = true; + ++it; + } else { + different = true; + it = sameHandCardsValueInt.erase(it); + } + } + if(different) { + ++cardStringIt_c; + handName += ", fourth card " + *cardStringIt_c; + } + // 4.there are still same hands + if(equal) { + different = false; + equal = false; + // third kicker? + for(it = sameHandCardsValueInt.begin(); it != sameHandCardsValueInt.end(); ) { + if((*it) == myCardsValueInt) { + equal = true; + ++it; + } else { + different = true; + it = sameHandCardsValueInt.erase(it); + } + } + if(different) { + ++cardStringIt_c; + handName += ", fifth card " + *cardStringIt_c; + } + } + } + } + } + } + break; + // Straight + case 4: { + + handName = *cardStringIt_c; + ++cardStringIt_c; + handName += *cardStringIt_c; + + } + break; + // Three of a kind + case 3: { + + handName = *cardStringIt_c; + ++cardStringIt_c; + handName += *cardStringIt_c; + + // same hand detection + for(it = shownCardsValueInt.begin(); it != shownCardsValueInt.end(); ++it) { + if(((*it)/1000000) == (myCardsValueInt/1000000)) { + sameHandCardsValueInt.push_back(*it); + } + } + + // 1.same hands existing + if(!(sameHandCardsValueInt.empty())) { + // first kicker? + for(it = sameHandCardsValueInt.begin(); it != sameHandCardsValueInt.end(); ) { + if(((*it)/10000) == (myCardsValueInt/10000)) { + equal = true; + ++it; + } else { + different = true; + it = sameHandCardsValueInt.erase(it); + } + } + if(different) { + ++cardStringIt_c; + handName += ", fourth card " + *cardStringIt_c; + } + // 2.there are still same hands + if(equal) { + different = false; + equal = false; + // second kicker? + for(it = sameHandCardsValueInt.begin(); it != sameHandCardsValueInt.end(); ) { + if(((*it)/100) == (myCardsValueInt/100)) { + equal = true; + ++it; + } else { + different = true; + it = sameHandCardsValueInt.erase(it); + } + } + if(different) { + ++cardStringIt_c; + handName += ", fifth card " + *cardStringIt_c; + } + } + } + } + break; + // Two Pairs + case 2: { + + handName = *cardStringIt_c; + ++cardStringIt_c; + handName += *cardStringIt_c; + ++cardStringIt_c; + handName += *cardStringIt_c; + + // same hand detection + for(it = shownCardsValueInt.begin(); it != shownCardsValueInt.end(); ++it) { + if(((*it)/10000) == (myCardsValueInt/10000)) { + sameHandCardsValueInt.push_back(*it); + } + } + + // 1.same hands existing + if(!(sameHandCardsValueInt.empty())) { + // first kicker? + for(it = sameHandCardsValueInt.begin(); it != sameHandCardsValueInt.end(); ) { + if(((*it)/100) == (myCardsValueInt/100)) { + equal = true; + ++it; + } else { + different = true; + it = sameHandCardsValueInt.erase(it); + } + } + if(different) { + ++cardStringIt_c; + handName += ", fifth card " + *cardStringIt_c; + } + } + } + break; + // Pair + case 1: { + + handName = *cardStringIt_c; + ++cardStringIt_c; + handName += *cardStringIt_c; + + // same hand detection + for(it = shownCardsValueInt.begin(); it != shownCardsValueInt.end(); ++it) { + if(((*it)/1000000) == (myCardsValueInt/1000000)) { + sameHandCardsValueInt.push_back(*it); + } + } + + // 1.same hands existing + if(!(sameHandCardsValueInt.empty())) { + // first kicker? + for(it = sameHandCardsValueInt.begin(); it != sameHandCardsValueInt.end(); ) { + if(((*it)/10000) == (myCardsValueInt/10000)) { + equal = true; + ++it; + } else { + different = true; + it = sameHandCardsValueInt.erase(it); + } + } + if(different) { + ++cardStringIt_c; + handName += ", third card " + *cardStringIt_c; + } + // 2.there are still same hands + if(equal) { + different = false; + equal = false; + // second kicker? + for(it = sameHandCardsValueInt.begin(); it != sameHandCardsValueInt.end(); ) { + if(((*it)/100) == (myCardsValueInt/100)) { + equal = true; + ++it; + } else { + different = true; + it = sameHandCardsValueInt.erase(it); + } + } + if(different) { + ++cardStringIt_c; + handName += ", fourth card " + *cardStringIt_c; + } + // 3.there are still same hands + if(equal) { + different = false; + equal = false; + // third kicker? + for(it = sameHandCardsValueInt.begin(); it != sameHandCardsValueInt.end(); ) { + if((*it) == myCardsValueInt) { + equal = true; + ++it; + } else { + different = true; + it = sameHandCardsValueInt.erase(it); + } + } + if(different) { + ++cardStringIt_c; + handName += ", fifth card " + *cardStringIt_c; + } + } + } + } + } + break; + // highestCard + case 0: { + + handName = *cardStringIt_c; + ++cardStringIt_c; + handName += *cardStringIt_c; + + // same hand detection + for(it = shownCardsValueInt.begin(); it != shownCardsValueInt.end(); ++it) { + if(((*it)/1000000) == (myCardsValueInt/1000000)) { + sameHandCardsValueInt.push_back(*it); + } + } + + // 1.same hands existing + if(!(sameHandCardsValueInt.empty())) { + // first kicker? + for(it = sameHandCardsValueInt.begin(); it != sameHandCardsValueInt.end(); ) { + if(((*it)/10000) == (myCardsValueInt/10000)) { + equal = true; + ++it; + } else { + different = true; + it = sameHandCardsValueInt.erase(it); + } + } + if(different) { + ++cardStringIt_c; + handName += ", second card " + *cardStringIt_c; + } + // 2.there are still same hands + if(equal) { + different = false; + equal = false; + // second kicker? + for(it = sameHandCardsValueInt.begin(); it != sameHandCardsValueInt.end(); ) { + if(((*it)/100) == (myCardsValueInt/100)) { + equal = true; + ++it; + } else { + different = true; + it = sameHandCardsValueInt.erase(it); + } + } + if(different) { + ++cardStringIt_c; + handName += ", third card " + *cardStringIt_c; + } + // 3.there are still same hands + if(equal) { + different = false; + equal = false; + // third kicker? + for(it = sameHandCardsValueInt.begin(); it != sameHandCardsValueInt.end(); ) { + if(((*it)/10) == (myCardsValueInt/10)) { + equal = true; + ++it; + } else { + different = true; + it = sameHandCardsValueInt.erase(it); + } + } + if(different) { + ++cardStringIt_c; + handName += ", fourth card " + *cardStringIt_c; + } + // 4.there are still same hands + if(equal) { + different = false; + equal = false; + // third kicker? + for(it = sameHandCardsValueInt.begin(); it != sameHandCardsValueInt.end(); ) { + if((*it) == myCardsValueInt) { + equal = true; + ++it; + } else { + different = true; + it = sameHandCardsValueInt.erase(it); + } + } + if(different) { + ++cardStringIt_c; + handName += ", fifth card " + *cardStringIt_c; + } + } + } + } + } + } + break; + default: + {} + } + + return handName; + +} + +std::list CardsValue::translateCardsValueCode(int cardsValueCode) +{ + + std::list cardString; + + //erste Ziffer : Blattname + int firstPart = cardsValueCode/100000000; + //zweite und dritte Ziffer : Kicker, highest Card, usw. + int secondPart = cardsValueCode/1000000 - firstPart*100; + //vierte und fünfte Ziffer + int thirdPart = cardsValueCode/10000 - firstPart*10000 - secondPart*100; + // usw + int fourthPart = cardsValueCode/100 - firstPart*1000000 - secondPart*10000 - thirdPart*100; + // + int fifthPart = cardsValueCode - firstPart*100000000 - secondPart*1000000 - thirdPart*10000 - fourthPart*100; + // fuer highest Card + int fifthPartA = cardsValueCode/10 - firstPart*10000000 - secondPart*100000 - thirdPart*1000 - fourthPart*10; + int fifthPartB = cardsValueCode - firstPart*100000000 - secondPart*1000000 - thirdPart*10000 - fourthPart*100 - fifthPartA*10; + + + switch (firstPart) { + + // Royal Flush + case 9: + cardString.push_back("Royal Flush"); + break; + // Straight Flush + case 8: { + cardString.push_back("Straight Flush, "); + switch(secondPart) { + case 11: + cardString.push_back("King high"); + break; + case 10: + cardString.push_back("Queen high"); + break; + case 9: + cardString.push_back("Jack high"); + break; + case 8: + cardString.push_back("Ten high"); + break; + case 7: + cardString.push_back("Nine high"); + break; + case 6: + cardString.push_back("Eight high"); + break; + case 5: + cardString.push_back("Seven high"); + break; + case 4: + cardString.push_back("Six high"); + break; + case 3: + cardString.push_back("Five high"); + break; + default: + cardString.push_back("ERROR"); + } + } + break; + // Four of a Kind + case 7: { + cardString.push_back("Four of a Kind, "); + switch(secondPart) { + case 12: + cardString.push_back("Aces"); + break; + case 11: + cardString.push_back("Kings"); + break; + case 10: + cardString.push_back("Queens"); + break; + case 9: + cardString.push_back("Jacks"); + break; + case 8: + cardString.push_back("Tens"); + break; + case 7: + cardString.push_back("Nines"); + break; + case 6: + cardString.push_back("Eights"); + break; + case 5: + cardString.push_back("Sevens"); + break; + case 4: + cardString.push_back("Sixes"); + break; + case 3: + cardString.push_back("Fives"); + break; + case 2: + cardString.push_back("Fours"); + break; + case 1: + cardString.push_back("Threes"); + break; + case 0: + cardString.push_back("Deuces"); + break; + default: + cardString.push_back("ERROR"); + } + // Kicker + switch(thirdPart) { + case 12: + cardString.push_back("Ace"); + break; + case 11: + cardString.push_back("King"); + break; + case 10: + cardString.push_back("Queen"); + break; + case 9: + cardString.push_back("Jack"); + break; + case 8: + cardString.push_back("Ten"); + break; + case 7: + cardString.push_back("Nine"); + break; + case 6: + cardString.push_back("Eight"); + break; + case 5: + cardString.push_back("Seven"); + break; + case 4: + cardString.push_back("Six"); + break; + case 3: + cardString.push_back("Five"); + break; + case 2: + cardString.push_back("Four"); + break; + case 1: + cardString.push_back("Three"); + break; + case 0: + cardString.push_back("Deuce"); + break; + default: + cardString.push_back("ERROR"); + } + } + break; + // Full House + case 6: { + cardString.push_back("Full House, "); + //Drilling + switch(secondPart) { + case 12: + cardString.push_back("Aces full of "); + break; + case 11: + cardString.push_back("Kings full of "); + break; + case 10: + cardString.push_back("Queens full of "); + break; + case 9: + cardString.push_back("Jacks full of "); + break; + case 8: + cardString.push_back("Tens full of "); + break; + case 7: + cardString.push_back("Nines full of "); + break; + case 6: + cardString.push_back("Eights full of "); + break; + case 5: + cardString.push_back("Sevens full of "); + break; + case 4: + cardString.push_back("Sixes full of "); + break; + case 3: + cardString.push_back("Fives full of "); + break; + case 2: + cardString.push_back("Fours full of "); + break; + case 1: + cardString.push_back("Threes full of "); + break; + case 0: + cardString.push_back("Deuces full of "); + break; + default: + cardString.push_back("ERROR"); + } + //Pärchen + switch(thirdPart) { + case 12: + cardString.push_back("Aces"); + break; + case 11: + cardString.push_back("Kings"); + break; + case 10: + cardString.push_back("Queens"); + break; + case 9: + cardString.push_back("Jacks"); + break; + case 8: + cardString.push_back("Tens"); + break; + case 7: + cardString.push_back("Nines"); + break; + case 6: + cardString.push_back("Eights"); + break; + case 5: + cardString.push_back("Sevens"); + break; + case 4: + cardString.push_back("Sixes"); + break; + case 3: + cardString.push_back("Fives"); + break; + case 2: + cardString.push_back("Fours"); + break; + case 1: + cardString.push_back("Threes"); + break; + case 0: + cardString.push_back("Deuces"); + break; + default: + cardString.push_back("ERROR"); + } + } + break; + // Flush + case 5: { + cardString.push_back("Flush, "); + //highest Card + switch(secondPart) { + case 12: + cardString.push_back("Ace high"); + break; + case 11: + cardString.push_back("King high"); + break; + case 10: + cardString.push_back("Queen high"); + break; + case 9: + cardString.push_back("Jack high"); + break; + case 8: + cardString.push_back("Ten high"); + break; + case 7: + cardString.push_back("Nine high"); + break; + case 6: + cardString.push_back("Eight high"); + break; + case 5: + cardString.push_back("Seven high"); + break; + case 4: + cardString.push_back("Six high"); + break; + default: + cardString.push_back("ERROR"); + } + // Kicker 1 + switch(thirdPart) { + case 12: + cardString.push_back("Ace"); + break; + case 11: + cardString.push_back("King"); + break; + case 10: + cardString.push_back("Queen"); + break; + case 9: + cardString.push_back("Jack"); + break; + case 8: + cardString.push_back("Ten"); + break; + case 7: + cardString.push_back("Nine"); + break; + case 6: + cardString.push_back("Eight"); + break; + case 5: + cardString.push_back("Seven"); + break; + case 4: + cardString.push_back("Six"); + break; + case 3: + cardString.push_back("Five"); + break; + case 2: + cardString.push_back("Four"); + break; + case 1: + cardString.push_back("Three"); + break; + case 0: + cardString.push_back("Deuce"); + break; + default: + cardString.push_back("ERROR"); + } + //Kicker 2 + switch(fourthPart) { + case 12: + cardString.push_back("Ace"); + break; + case 11: + cardString.push_back("King"); + break; + case 10: + cardString.push_back("Queen"); + break; + case 9: + cardString.push_back("Jack"); + break; + case 8: + cardString.push_back("Ten"); + break; + case 7: + cardString.push_back("Nine"); + break; + case 6: + cardString.push_back("Eight"); + break; + case 5: + cardString.push_back("Seven"); + break; + case 4: + cardString.push_back("Six"); + break; + case 3: + cardString.push_back("Five"); + break; + case 2: + cardString.push_back("Four"); + break; + case 1: + cardString.push_back("Three"); + break; + case 0: + cardString.push_back("Deuce"); + break; + default: + cardString.push_back("ERROR"); + } + //Kicker 3 + switch(fifthPartA) { + case 9: + cardString.push_back("Jack"); + break; + case 8: + cardString.push_back("Ten"); + break; + case 7: + cardString.push_back("Nine"); + break; + case 6: + cardString.push_back("Eight"); + break; + case 5: + cardString.push_back("Seven"); + break; + case 4: + cardString.push_back("Six"); + break; + case 3: + cardString.push_back("Five"); + break; + case 2: + cardString.push_back("Four"); + break; + case 1: + cardString.push_back("Three"); + break; + case 0: + cardString.push_back("Deuce"); + break; + default: + cardString.push_back("ERROR"); + } + //Kicker 4 + switch(fifthPartB) { + case 9: + cardString.push_back("Jack"); + break; + case 8: + cardString.push_back("Ten"); + break; + case 7: + cardString.push_back("Nine"); + break; + case 6: + cardString.push_back("Eight"); + break; + case 5: + cardString.push_back("Seven"); + break; + case 4: + cardString.push_back("Six"); + break; + case 3: + cardString.push_back("Five"); + break; + case 2: + cardString.push_back("Four"); + break; + case 1: + cardString.push_back("Three"); + break; + case 0: + cardString.push_back("Deuce"); + break; + default: + cardString.push_back("ERROR"); + } + } + break; + // Straight + case 4: { + cardString.push_back("Straight, "); + switch(secondPart) { + case 12: + cardString.push_back("Ace high"); + break; + case 11: + cardString.push_back("King high"); + break; + case 10: + cardString.push_back("Queen high"); + break; + case 9: + cardString.push_back("Jack high"); + break; + case 8: + cardString.push_back("Ten high"); + break; + case 7: + cardString.push_back("Nine high"); + break; + case 6: + cardString.push_back("Eight high"); + break; + case 5: + cardString.push_back("Seven high"); + break; + case 4: + cardString.push_back("Six high"); + break; + case 3: + cardString.push_back("Five high"); + break; + default: + cardString.push_back("ERROR"); + } + } + break; + // Three of a Kind + case 3: { + cardString.push_back("Three of a Kind, "); + switch(secondPart) { + case 12: + cardString.push_back("Aces"); + break; + case 11: + cardString.push_back("Kings"); + break; + case 10: + cardString.push_back("Queens"); + break; + case 9: + cardString.push_back("Jacks"); + break; + case 8: + cardString.push_back("Tens"); + break; + case 7: + cardString.push_back("Nines"); + break; + case 6: + cardString.push_back("Eights"); + break; + case 5: + cardString.push_back("Sevens"); + break; + case 4: + cardString.push_back("Sixes"); + break; + case 3: + cardString.push_back("Fives"); + break; + case 2: + cardString.push_back("Fours"); + break; + case 1: + cardString.push_back("Threes"); + break; + case 0: + cardString.push_back("Deuces"); + break; + default: + cardString.push_back("ERROR"); + } + //Kicker 1 + switch(thirdPart) { + case 12: + cardString.push_back("Ace"); + break; + case 11: + cardString.push_back("King"); + break; + case 10: + cardString.push_back("Queen"); + break; + case 9: + cardString.push_back("Jack"); + break; + case 8: + cardString.push_back("Ten"); + break; + case 7: + cardString.push_back("Nine"); + break; + case 6: + cardString.push_back("Eight"); + break; + case 5: + cardString.push_back("Seven"); + break; + case 4: + cardString.push_back("Six"); + break; + case 3: + cardString.push_back("Five"); + break; + case 2: + cardString.push_back("Four"); + break; + case 1: + cardString.push_back("Three"); + break; + case 0: + cardString.push_back("Deuce"); + break; + default: + cardString.push_back("ERROR"); + } + //Kicker 2 + switch(fourthPart) { + case 12: + cardString.push_back("Ace"); + break; + case 11: + cardString.push_back("King"); + break; + case 10: + cardString.push_back("Queen"); + break; + case 9: + cardString.push_back("Jack"); + break; + case 8: + cardString.push_back("Ten"); + break; + case 7: + cardString.push_back("Nine"); + break; + case 6: + cardString.push_back("Eight"); + break; + case 5: + cardString.push_back("Seven"); + break; + case 4: + cardString.push_back("Six"); + break; + case 3: + cardString.push_back("Five"); + break; + case 2: + cardString.push_back("Four"); + break; + case 1: + cardString.push_back("Three"); + break; + case 0: + cardString.push_back("Deuce"); + break; + default: + cardString.push_back("ERROR"); + } + } + break; + // Two Pairs + case 2: { + cardString.push_back("Two Pairs, "); + // erster Pair + switch(secondPart) { + case 12: + cardString.push_back("Aces and "); + break; + case 11: + cardString.push_back("Kings and "); + break; + case 10: + cardString.push_back("Queens and "); + break; + case 9: + cardString.push_back("Jacks and "); + break; + case 8: + cardString.push_back("Tens and "); + break; + case 7: + cardString.push_back("Nines and "); + break; + case 6: + cardString.push_back("Eights and "); + break; + case 5: + cardString.push_back("Sevens and "); + break; + case 4: + cardString.push_back("Sixes and "); + break; + case 3: + cardString.push_back("Fives and "); + break; + case 2: + cardString.push_back("Fours and "); + break; + case 1: + cardString.push_back("Threes and "); + break; + case 0: + cardString.push_back("Deuces and "); + break; + default: + cardString.push_back("ERROR"); + } + // zweiter Pair + switch(thirdPart) { + case 12: + cardString.push_back("Aces"); + break; + case 11: + cardString.push_back("Kings"); + break; + case 10: + cardString.push_back("Queens"); + break; + case 9: + cardString.push_back("Jacks"); + break; + case 8: + cardString.push_back("Tens"); + break; + case 7: + cardString.push_back("Nines"); + break; + case 6: + cardString.push_back("Eights"); + break; + case 5: + cardString.push_back("Sevens"); + break; + case 4: + cardString.push_back("Sixes"); + break; + case 3: + cardString.push_back("Fives"); + break; + case 2: + cardString.push_back("Fours"); + break; + case 1: + cardString.push_back("Threes"); + break; + case 0: + cardString.push_back("Deuces"); + break; + default: + cardString.push_back("ERROR"); + } + //Kicker + switch(fourthPart) { + case 12: + cardString.push_back("Ace"); + break; + case 11: + cardString.push_back("King"); + break; + case 10: + cardString.push_back("Queen"); + break; + case 9: + cardString.push_back("Jack"); + break; + case 8: + cardString.push_back("Ten"); + break; + case 7: + cardString.push_back("Nine"); + break; + case 6: + cardString.push_back("Eight"); + break; + case 5: + cardString.push_back("Seven"); + break; + case 4: + cardString.push_back("Six"); + break; + case 3: + cardString.push_back("Five"); + break; + case 2: + cardString.push_back("Four"); + break; + case 1: + cardString.push_back("Three"); + break; + case 0: + cardString.push_back("Deuce"); + break; + default: + cardString.push_back("ERROR"); + } + } + break; + // One Pair + case 1: { + cardString.push_back("One Pair, "); + // Pair + switch(secondPart) { + case 12: + cardString.push_back("Aces"); + break; + case 11: + cardString.push_back("Kings"); + break; + case 10: + cardString.push_back("Queens"); + break; + case 9: + cardString.push_back("Jacks"); + break; + case 8: + cardString.push_back("Tens"); + break; + case 7: + cardString.push_back("Nines"); + break; + case 6: + cardString.push_back("Eights"); + break; + case 5: + cardString.push_back("Sevens"); + break; + case 4: + cardString.push_back("Sixes"); + break; + case 3: + cardString.push_back("Fives"); + break; + case 2: + cardString.push_back("Fours"); + break; + case 1: + cardString.push_back("Threes"); + break; + case 0: + cardString.push_back("Deuces"); + break; + default: + cardString.push_back("ERROR"); + } + // Kicker 1 + switch(thirdPart) { + case 12: + cardString.push_back("Ace"); + break; + case 11: + cardString.push_back("King"); + break; + case 10: + cardString.push_back("Queen"); + break; + case 9: + cardString.push_back("Jack"); + break; + case 8: + cardString.push_back("Ten"); + break; + case 7: + cardString.push_back("Nine"); + break; + case 6: + cardString.push_back("Eight"); + break; + case 5: + cardString.push_back("Seven"); + break; + case 4: + cardString.push_back("Six"); + break; + case 3: + cardString.push_back("Five"); + break; + case 2: + cardString.push_back("Four"); + break; + case 1: + cardString.push_back("Three"); + break; + case 0: + cardString.push_back("Deuce"); + break; + default: + cardString.push_back("ERROR"); + } + //Kicker 2 + switch(fourthPart) { + case 12: + cardString.push_back("Ace"); + break; + case 11: + cardString.push_back("King"); + break; + case 10: + cardString.push_back("Queen"); + break; + case 9: + cardString.push_back("Jack"); + break; + case 8: + cardString.push_back("Ten"); + break; + case 7: + cardString.push_back("Nine"); + break; + case 6: + cardString.push_back("Eight"); + break; + case 5: + cardString.push_back("Seven"); + break; + case 4: + cardString.push_back("Six"); + break; + case 3: + cardString.push_back("Five"); + break; + case 2: + cardString.push_back("Four"); + break; + case 1: + cardString.push_back("Three"); + break; + case 0: + cardString.push_back("Deuce"); + break; + default: + cardString.push_back("ERROR"); + } + //Kicker 3 + switch(fifthPart) { + case 12: + cardString.push_back("Ace"); + break; + case 11: + cardString.push_back("King"); + break; + case 10: + cardString.push_back("Queen"); + break; + case 9: + cardString.push_back("Jack"); + break; + case 8: + cardString.push_back("Ten"); + break; + case 7: + cardString.push_back("Nine"); + break; + case 6: + cardString.push_back("Eight"); + break; + case 5: + cardString.push_back("Seven"); + break; + case 4: + cardString.push_back("Six"); + break; + case 3: + cardString.push_back("Five"); + break; + case 2: + cardString.push_back("Four"); + break; + case 1: + cardString.push_back("Three"); + break; + case 0: + cardString.push_back("Deuce"); + break; + default: + cardString.push_back("ERROR"); + } + } + break; + // Highest Card + case 0: { + cardString.push_back("High Card, "); + // Kicker 1 + switch(secondPart) { + case 12: + cardString.push_back("Ace"); + break; + case 11: + cardString.push_back("King"); + break; + case 10: + cardString.push_back("Queen"); + break; + case 9: + cardString.push_back("Jack"); + break; + case 8: + cardString.push_back("Ten"); + break; + case 7: + cardString.push_back("Nine"); + break; + case 6: + cardString.push_back("Eight"); + break; + case 5: + cardString.push_back("Seven"); + break; + case 4: + cardString.push_back("Six"); + break; + case 3: + cardString.push_back("Five"); + break; + case 2: + cardString.push_back("Four"); + break; + case 1: + cardString.push_back("Three"); + break; + case 0: + cardString.push_back("Deuces"); + break; + default: + cardString.push_back("ERROR"); + } + // Kicker 2 + switch(thirdPart) { + case 12: + cardString.push_back("Ace"); + break; + case 11: + cardString.push_back("King"); + break; + case 10: + cardString.push_back("Queen"); + break; + case 9: + cardString.push_back("Jack"); + break; + case 8: + cardString.push_back("Ten"); + break; + case 7: + cardString.push_back("Nine"); + break; + case 6: + cardString.push_back("Eight"); + break; + case 5: + cardString.push_back("Seven"); + break; + case 4: + cardString.push_back("Six"); + break; + case 3: + cardString.push_back("Five"); + break; + case 2: + cardString.push_back("Four"); + break; + case 1: + cardString.push_back("Three"); + break; + case 0: + cardString.push_back("Deuce"); + break; + default: + cardString.push_back("ERROR"); + } + //Kicker 3 + switch(fourthPart) { + case 12: + cardString.push_back("Ace"); + break; + case 11: + cardString.push_back("King"); + break; + case 10: + cardString.push_back("Queen"); + break; + case 9: + cardString.push_back("Jack"); + break; + case 8: + cardString.push_back("Ten"); + break; + case 7: + cardString.push_back("Nine"); + break; + case 6: + cardString.push_back("Eight"); + break; + case 5: + cardString.push_back("Seven"); + break; + case 4: + cardString.push_back("Six"); + break; + case 3: + cardString.push_back("Five"); + break; + case 2: + cardString.push_back("Four"); + break; + case 1: + cardString.push_back("Three"); + break; + case 0: + cardString.push_back("Deuce"); + break; + default: + cardString.push_back("ERROR"); + } + //Kicker 4 + switch(fifthPartA) { + case 9: + cardString.push_back("Jack"); + break; + case 8: + cardString.push_back("Ten"); + break; + case 7: + cardString.push_back("Nine"); + break; + case 6: + cardString.push_back("Eight"); + break; + case 5: + cardString.push_back("Seven"); + break; + case 4: + cardString.push_back("Six"); + break; + case 3: + cardString.push_back("Five"); + break; + case 2: + cardString.push_back("Four"); + break; + case 1: + cardString.push_back("Three"); + break; + case 0: + cardString.push_back("Deuce"); + break; + default: + cardString.push_back("ERROR"); + } + //Kicker 5 + switch(fifthPartB) { + case 9: + cardString.push_back("Jack"); + break; + case 8: + cardString.push_back("Ten"); + break; + case 7: + cardString.push_back("Nine"); + break; + case 6: + cardString.push_back("Eight"); + break; + case 5: + cardString.push_back("Seven"); + break; + case 4: + cardString.push_back("Six"); + break; + case 3: + cardString.push_back("Five"); + break; + case 2: + cardString.push_back("Four"); + break; + case 1: + cardString.push_back("Three"); + break; + case 0: + cardString.push_back("Deuce"); + break; + default: + cardString.push_back("ERROR"); + } + } + break; + default: + cardString.push_back("ERROR"); + + } + + return cardString; + +} + + //int** CardsValue::showdown(GameState beRoID, int** playerCards, int playerCount) { // // int i,j; diff --git a/src/engine/local_engine/cardsvalue.h b/src/engine/local_engine/cardsvalue.h index 1e4bed78..9e3aa25a 100755 --- a/src/engine/local_engine/cardsvalue.h +++ b/src/engine/local_engine/cardsvalue.h @@ -21,18 +21,18 @@ #define CARDSVALUE_H #include "game_defs.h" -#include "arraydata.h" -#include "tools.h" - -#include - +#include "engine_defs.h" +#include +#include class CardsValue { public: static int holeCardsClass(int, int); static int cardsValue(int*, int*); + static std::string determineHandName(int myCardsValueInt, PlayerList activePlayerList); + static std::list translateCardsValueCode(int cardsValueCode); static int holeCardsToIntCode(int*); static int* intCodeToHoleCards(int); diff --git a/src/engine/local_engine/localboard.cpp b/src/engine/local_engine/localboard.cpp index 0ecca930..39338195 100755 --- a/src/engine/local_engine/localboard.cpp +++ b/src/engine/local_engine/localboard.cpp @@ -25,8 +25,6 @@ #include "localexception.h" #include "engine_msg.h" -using namespace std; - LocalBoard::LocalBoard(unsigned dp) : BoardInterface(), pot(0), sets(0), dealerPosition(dp), allInCondition(false), lastActionPlayer(0) { myCards[0] = myCards[1] = myCards[2] = myCards[3] = myCards[4] = 0; @@ -78,7 +76,7 @@ void LocalBoard::distributePot() PlayerListConstIterator it_c; // filling player sets vector - vector playerSets; + std::vector playerSets; for(it=seatsList->begin(); it!=seatsList->end(); ++it) { if((*it)->getMyActiveStatus()) { playerSets.push_back( ( ((*it)->getMyRoundStartCash()) - ((*it)->getMyCash()) ) ); @@ -89,11 +87,11 @@ void LocalBoard::distributePot() } // sort player sets asc - vector playerSetsSort = playerSets; + std::vector playerSetsSort = playerSets; sort(playerSetsSort.begin(), playerSetsSort.end()); // potLevel[0] = amount, potLevel[1] = sum, potLevel[2..n] = winner - vector potLevel; + std::vector potLevel; // temp var int highestCardsValue; diff --git a/src/engine/log.cpp b/src/engine/log.cpp index 6b641180..e6d21d79 100644 --- a/src/engine/log.cpp +++ b/src/engine/log.cpp @@ -18,10 +18,12 @@ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * ***************************************************************************/ -#include "configfile.h" -#include "game_defs.h" #include "log.h" + +#include "configfile.h" #include "playerinterface.h" +#include "cardsvalue.h" + #include #include #include @@ -244,11 +246,11 @@ void Log::logNewHandMsg(int handID, unsigned dealerPosition, int smallBlind, uns sql += ") VALUES ("; sql += boost::lexical_cast(curHandID); sql += "," + boost::lexical_cast(curGameID); - sql += "," + boost::lexical_cast(dealerPosition+1); + sql += "," + boost::lexical_cast(dealerPosition); sql += "," + boost::lexical_cast(smallBlind); - sql += "," + boost::lexical_cast(smallBlindPosition+1); + sql += "," + boost::lexical_cast(smallBlindPosition); sql += "," + boost::lexical_cast(bigBlind); - sql += "," + boost::lexical_cast(bigBlindPosition+1); + sql += "," + boost::lexical_cast(bigBlindPosition); for(it_c = seatsList->begin(); it_c!=seatsList->end(); it_c++) { if((*it_c)->getMyActiveStatus()) { sql += "," + boost::lexical_cast((*it_c)->getMyCash()); @@ -261,7 +263,7 @@ void Log::logNewHandMsg(int handID, unsigned dealerPosition, int smallBlind, uns cout << "Error in statement: " << sql.data() << "[" << errmsg << "]." << endl; } - logPlayerAction(0,dealerPosition+1,LOG_ACTION_DEALER); + logPlayerAction(0,dealerPosition,LOG_ACTION_DEALER); } } } @@ -396,6 +398,44 @@ void Log::logBoardCards(int bero, int boardCards[5]) } } +//void Log::logFlipHoleCards(int bero, int seat, PlayerActionLog action, int cards[2], int cardsValueInt) +//{ +// if(SQLITE_LOG) { + +// if(logOnOff) { +// //if write logfiles is enabled + +// string sql; +// char *errmsg; + +// if( mySqliteLogDb != 0 ) { +// // sqlite-db is open + +// sql = "UPDATE Hand SET "; +// sql += "Seat_" + boost::lexical_cast(seat) +"_Card_1=" + boost::lexical_cast(cards[0]) + ","; +// sql += "Seat_" + boost::lexical_cast(seat) +"_Card_1=" + boost::lexical_cast(cards[0]); +// if(cardsVauleInt > 0) { +// sql += "Seat_" + boost::lexical_cast(seat) +"_Hand_int=" + boost::lexical_cast(cardsValueInt); +// sql += "Seat_" + boost::lexical_cast(seat) +"_Hand_text=" + boost::lexical_cast(CardsValue::determineHandname(cardsValueInt)); +// } +// sql += " WHERE "; +// sql += "GameID=" + boost::lexical_cast(curGameID) + " AND "; +// sql += "HandID=" + boost::lexical_cast(curHandID); +// if(sqlite3_exec(mySqliteLogDb, sql.data(), 0, 0, &errmsg) != SQLITE_OK) { +// cout << "Error in statement: " << sql.data() << "[" << errmsg << "]." << endl; +// } + + + + +// logPlayerAction(bero, seat, action); + + +// } +// } +// } +//} + //void //Log::closeLogDbAtExit() //{ diff --git a/src/engine/log.h b/src/engine/log.h index 6357c62c..657103dd 100644 --- a/src/engine/log.h +++ b/src/engine/log.h @@ -20,7 +20,8 @@ #ifndef LOG_H #define LOG_H -#include +#include "engine_defs.h" +#include "game_defs.h" struct sqlite3; @@ -36,6 +37,8 @@ public: void logNewHandMsg(int handID, unsigned dealerPosition, int smallBlind, unsigned smallBlindPosition, int bigBlind, unsigned bigBlindPosition, PlayerList seatsList); void logPlayerAction(int bero, int seat, PlayerActionLog action, int amount = 0); void logBoardCards(int bero, int boardCards[5]); + void logHoleCards(int bero, int seat, PlayerActionLog action, int cards[2], int cardsValueInt = 0); +// void Log::logFlipHoleCards(int bero, int seat, PlayerActionLog action, int cards[2], int cardsValueInt) // void closeLogDbAtExit(); diff --git a/src/gui/qt/gametable/log/guilog.cpp b/src/gui/qt/gametable/log/guilog.cpp index 487b8feb..6d255873 100644 --- a/src/gui/qt/gametable/log/guilog.cpp +++ b/src/gui/qt/gametable/log/guilog.cpp @@ -23,6 +23,7 @@ #include #include #include +#include #include #include "gametablestylereader.h" @@ -587,7 +588,7 @@ void guiLog::logFlipHoleCardsMsg(QString playerName, int card1, int card2, int c if (cardsValueInt != -1) { - tempHandName = determineHandName(cardsValueInt); + tempHandName = CardsValue::determineHandName(cardsValueInt,myW->getSession()->getCurrentGame()->getActivePlayerList()).c_str(); myW->textBrowser_Log->append("getChatLogTextColor()+";\">"+playerName+" "+showHas+" \""+tempHandName+"\""); @@ -604,7 +605,7 @@ void guiLog::logFlipHoleCardsMsg(QString playerName, int card1, int card2, int c if (cardsValueInt != -1) { - tempHandName = determineHandName(cardsValueInt); + tempHandName.fromStdString(CardsValue::determineHandName(cardsValueInt,myW->getSession()->getCurrentGame()->getActivePlayerList())); logFileStreamString += playerName+" "+showHas+" [ "+translateCardCode(card1).at(0)+""+translateCardCode(card1).at(1)+","+translateCardCode(card2).at(0)+""+translateCardCode(card2).at(1)+"] - "+tempHandName+"
\n"; @@ -776,1565 +777,6 @@ QStringList guiLog::translateCardCode(int cardCode) return cardString; } -QStringList guiLog::translateCardsValueCode(int cardsValueCode) -{ - - QStringList cardString; - - //erste Ziffer : Blattname - int firstPart = cardsValueCode/100000000; - //zweite und dritte Ziffer : Kicker, highest Card, usw. - int secondPart = cardsValueCode/1000000 - firstPart*100; - //vierte und fünfte Ziffer - int thirdPart = cardsValueCode/10000 - firstPart*10000 - secondPart*100; - // usw - int fourthPart = cardsValueCode/100 - firstPart*1000000 - secondPart*10000 - thirdPart*100; - // - int fifthPart = cardsValueCode - firstPart*100000000 - secondPart*1000000 - thirdPart*10000 - fourthPart*100; - // fuer highest Card - int fifthPartA = cardsValueCode/10 - firstPart*10000000 - secondPart*100000 - thirdPart*1000 - fourthPart*10; - int fifthPartB = cardsValueCode - firstPart*100000000 - secondPart*1000000 - thirdPart*10000 - fourthPart*100 - fifthPartA*10; - - - switch (firstPart) { - - // Royal Flush - case 9: - cardString << "Royal Flush"; - break; - // Straight Flush - case 8: { - cardString << "Straight Flush, "; - switch(secondPart) { - case 11: - cardString << "King high"; - break; - case 10: - cardString << "Queen high"; - break; - case 9: - cardString << "Jack high"; - break; - case 8: - cardString << "Ten high"; - break; - case 7: - cardString << "Nine high"; - break; - case 6: - cardString << "Eight high"; - break; - case 5: - cardString << "Seven high"; - break; - case 4: - cardString << "Six high"; - break; - case 3: - cardString << "Five high"; - break; - default: - cardString << "ERROR"; - } - } - break; - // Four of a Kind - case 7: { - cardString << "Four of a Kind, "; - switch(secondPart) { - case 12: - cardString << "Aces"; - break; - case 11: - cardString << "Kings"; - break; - case 10: - cardString << "Queens"; - break; - case 9: - cardString << "Jacks"; - break; - case 8: - cardString << "Tens"; - break; - case 7: - cardString << "Nines"; - break; - case 6: - cardString << "Eights"; - break; - case 5: - cardString << "Sevens"; - break; - case 4: - cardString << "Sixes"; - break; - case 3: - cardString << "Fives"; - break; - case 2: - cardString << "Fours"; - break; - case 1: - cardString << "Threes"; - break; - case 0: - cardString << "Deuces"; - break; - default: - cardString << "ERROR"; - } - // Kicker - switch(thirdPart) { - case 12: - cardString << "Ace"; - break; - case 11: - cardString << "King"; - break; - case 10: - cardString << "Queen"; - break; - case 9: - cardString << "Jack"; - break; - case 8: - cardString << "Ten"; - break; - case 7: - cardString << "Nine"; - break; - case 6: - cardString << "Eight"; - break; - case 5: - cardString << "Seven"; - break; - case 4: - cardString << "Six"; - break; - case 3: - cardString << "Five"; - break; - case 2: - cardString << "Four"; - break; - case 1: - cardString << "Three"; - break; - case 0: - cardString << "Deuce"; - break; - default: - cardString << "ERROR"; - } - } - break; - // Full House - case 6: { - cardString << "Full House, "; - //Drilling - switch(secondPart) { - case 12: - cardString << "Aces full of "; - break; - case 11: - cardString << "Kings full of "; - break; - case 10: - cardString << "Queens full of "; - break; - case 9: - cardString << "Jacks full of "; - break; - case 8: - cardString << "Tens full of "; - break; - case 7: - cardString << "Nines full of "; - break; - case 6: - cardString << "Eights full of "; - break; - case 5: - cardString << "Sevens full of "; - break; - case 4: - cardString << "Sixes full of "; - break; - case 3: - cardString << "Fives full of "; - break; - case 2: - cardString << "Fours full of "; - break; - case 1: - cardString << "Threes full of "; - break; - case 0: - cardString << "Deuces full of "; - break; - default: - cardString << "ERROR"; - } - //Pärchen - switch(thirdPart) { - case 12: - cardString << "Aces"; - break; - case 11: - cardString << "Kings"; - break; - case 10: - cardString << "Queens"; - break; - case 9: - cardString << "Jacks"; - break; - case 8: - cardString << "Tens"; - break; - case 7: - cardString << "Nines"; - break; - case 6: - cardString << "Eights"; - break; - case 5: - cardString << "Sevens"; - break; - case 4: - cardString << "Sixes"; - break; - case 3: - cardString << "Fives"; - break; - case 2: - cardString << "Fours"; - break; - case 1: - cardString << "Threes"; - break; - case 0: - cardString << "Deuces"; - break; - default: - cardString << "ERROR"; - } - } - break; - // Flush - case 5: { - cardString << "Flush, "; - //highest Card - switch(secondPart) { - case 12: - cardString << "Ace high"; - break; - case 11: - cardString << "King high"; - break; - case 10: - cardString << "Queen high"; - break; - case 9: - cardString << "Jack high"; - break; - case 8: - cardString << "Ten high"; - break; - case 7: - cardString << "Nine high"; - break; - case 6: - cardString << "Eight high"; - break; - case 5: - cardString << "Seven high"; - break; - case 4: - cardString << "Six high"; - break; - default: - cardString << "ERROR"; - } - // Kicker 1 - switch(thirdPart) { - case 12: - cardString << "Ace"; - break; - case 11: - cardString << "King"; - break; - case 10: - cardString << "Queen"; - break; - case 9: - cardString << "Jack"; - break; - case 8: - cardString << "Ten"; - break; - case 7: - cardString << "Nine"; - break; - case 6: - cardString << "Eight"; - break; - case 5: - cardString << "Seven"; - break; - case 4: - cardString << "Six"; - break; - case 3: - cardString << "Five"; - break; - case 2: - cardString << "Four"; - break; - case 1: - cardString << "Three"; - break; - case 0: - cardString << "Deuce"; - break; - default: - cardString << "ERROR"; - } - //Kicker 2 - switch(fourthPart) { - case 12: - cardString << "Ace"; - break; - case 11: - cardString << "King"; - break; - case 10: - cardString << "Queen"; - break; - case 9: - cardString << "Jack"; - break; - case 8: - cardString << "Ten"; - break; - case 7: - cardString << "Nine"; - break; - case 6: - cardString << "Eight"; - break; - case 5: - cardString << "Seven"; - break; - case 4: - cardString << "Six"; - break; - case 3: - cardString << "Five"; - break; - case 2: - cardString << "Four"; - break; - case 1: - cardString << "Three"; - break; - case 0: - cardString << "Deuce"; - break; - default: - cardString << "ERROR"; - } - //Kicker 3 - switch(fifthPartA) { - case 9: - cardString << "Jack"; - break; - case 8: - cardString << "Ten"; - break; - case 7: - cardString << "Nine"; - break; - case 6: - cardString << "Eight"; - break; - case 5: - cardString << "Seven"; - break; - case 4: - cardString << "Six"; - break; - case 3: - cardString << "Five"; - break; - case 2: - cardString << "Four"; - break; - case 1: - cardString << "Three"; - break; - case 0: - cardString << "Deuce"; - break; - default: - cardString << "ERROR"; - } - //Kicker 4 - switch(fifthPartB) { - case 9: - cardString << "Jack"; - break; - case 8: - cardString << "Ten"; - break; - case 7: - cardString << "Nine"; - break; - case 6: - cardString << "Eight"; - break; - case 5: - cardString << "Seven"; - break; - case 4: - cardString << "Six"; - break; - case 3: - cardString << "Five"; - break; - case 2: - cardString << "Four"; - break; - case 1: - cardString << "Three"; - break; - case 0: - cardString << "Deuce"; - break; - default: - cardString << "ERROR"; - } - } - break; - // Straight - case 4: { - cardString << "Straight, "; - switch(secondPart) { - case 12: - cardString << "Ace high"; - break; - case 11: - cardString << "King high"; - break; - case 10: - cardString << "Queen high"; - break; - case 9: - cardString << "Jack high"; - break; - case 8: - cardString << "Ten high"; - break; - case 7: - cardString << "Nine high"; - break; - case 6: - cardString << "Eight high"; - break; - case 5: - cardString << "Seven high"; - break; - case 4: - cardString << "Six high"; - break; - case 3: - cardString << "Five high"; - break; - default: - cardString << "ERROR"; - } - } - break; - // Three of a Kind - case 3: { - cardString << "Three of a Kind, "; - switch(secondPart) { - case 12: - cardString << "Aces"; - break; - case 11: - cardString << "Kings"; - break; - case 10: - cardString << "Queens"; - break; - case 9: - cardString << "Jacks"; - break; - case 8: - cardString << "Tens"; - break; - case 7: - cardString << "Nines"; - break; - case 6: - cardString << "Eights"; - break; - case 5: - cardString << "Sevens"; - break; - case 4: - cardString << "Sixes"; - break; - case 3: - cardString << "Fives"; - break; - case 2: - cardString << "Fours"; - break; - case 1: - cardString << "Threes"; - break; - case 0: - cardString << "Deuces"; - break; - default: - cardString << "ERROR"; - } - //Kicker 1 - switch(thirdPart) { - case 12: - cardString << "Ace"; - break; - case 11: - cardString << "King"; - break; - case 10: - cardString << "Queen"; - break; - case 9: - cardString << "Jack"; - break; - case 8: - cardString << "Ten"; - break; - case 7: - cardString << "Nine"; - break; - case 6: - cardString << "Eight"; - break; - case 5: - cardString << "Seven"; - break; - case 4: - cardString << "Six"; - break; - case 3: - cardString << "Five"; - break; - case 2: - cardString << "Four"; - break; - case 1: - cardString << "Three"; - break; - case 0: - cardString << "Deuce"; - break; - default: - cardString << "ERROR"; - } - //Kicker 2 - switch(fourthPart) { - case 12: - cardString << "Ace"; - break; - case 11: - cardString << "King"; - break; - case 10: - cardString << "Queen"; - break; - case 9: - cardString << "Jack"; - break; - case 8: - cardString << "Ten"; - break; - case 7: - cardString << "Nine"; - break; - case 6: - cardString << "Eight"; - break; - case 5: - cardString << "Seven"; - break; - case 4: - cardString << "Six"; - break; - case 3: - cardString << "Five"; - break; - case 2: - cardString << "Four"; - break; - case 1: - cardString << "Three"; - break; - case 0: - cardString << "Deuce"; - break; - default: - cardString << "ERROR"; - } - } - break; - // Two Pairs - case 2: { - cardString << "Two Pairs, "; - // erster Pair - switch(secondPart) { - case 12: - cardString << "Aces and "; - break; - case 11: - cardString << "Kings and "; - break; - case 10: - cardString << "Queens and "; - break; - case 9: - cardString << "Jacks and "; - break; - case 8: - cardString << "Tens and "; - break; - case 7: - cardString << "Nines and "; - break; - case 6: - cardString << "Eights and "; - break; - case 5: - cardString << "Sevens and "; - break; - case 4: - cardString << "Sixes and "; - break; - case 3: - cardString << "Fives and "; - break; - case 2: - cardString << "Fours and "; - break; - case 1: - cardString << "Threes and "; - break; - case 0: - cardString << "Deuces and "; - break; - default: - cardString << "ERROR"; - } - // zweiter Pair - switch(thirdPart) { - case 12: - cardString << "Aces"; - break; - case 11: - cardString << "Kings"; - break; - case 10: - cardString << "Queens"; - break; - case 9: - cardString << "Jacks"; - break; - case 8: - cardString << "Tens"; - break; - case 7: - cardString << "Nines"; - break; - case 6: - cardString << "Eights"; - break; - case 5: - cardString << "Sevens"; - break; - case 4: - cardString << "Sixes"; - break; - case 3: - cardString << "Fives"; - break; - case 2: - cardString << "Fours"; - break; - case 1: - cardString << "Threes"; - break; - case 0: - cardString << "Deuces"; - break; - default: - cardString << "ERROR"; - } - //Kicker - switch(fourthPart) { - case 12: - cardString << "Ace"; - break; - case 11: - cardString << "King"; - break; - case 10: - cardString << "Queen"; - break; - case 9: - cardString << "Jack"; - break; - case 8: - cardString << "Ten"; - break; - case 7: - cardString << "Nine"; - break; - case 6: - cardString << "Eight"; - break; - case 5: - cardString << "Seven"; - break; - case 4: - cardString << "Six"; - break; - case 3: - cardString << "Five"; - break; - case 2: - cardString << "Four"; - break; - case 1: - cardString << "Three"; - break; - case 0: - cardString << "Deuce"; - break; - default: - cardString << "ERROR"; - } - } - break; - // One Pair - case 1: { - cardString << "One Pair, "; - // Pair - switch(secondPart) { - case 12: - cardString << "Aces"; - break; - case 11: - cardString << "Kings"; - break; - case 10: - cardString << "Queens"; - break; - case 9: - cardString << "Jacks"; - break; - case 8: - cardString << "Tens"; - break; - case 7: - cardString << "Nines"; - break; - case 6: - cardString << "Eights"; - break; - case 5: - cardString << "Sevens"; - break; - case 4: - cardString << "Sixes"; - break; - case 3: - cardString << "Fives"; - break; - case 2: - cardString << "Fours"; - break; - case 1: - cardString << "Threes"; - break; - case 0: - cardString << "Deuces"; - break; - default: - cardString << "ERROR"; - } - // Kicker 1 - switch(thirdPart) { - case 12: - cardString << "Ace"; - break; - case 11: - cardString << "King"; - break; - case 10: - cardString << "Queen"; - break; - case 9: - cardString << "Jack"; - break; - case 8: - cardString << "Ten"; - break; - case 7: - cardString << "Nine"; - break; - case 6: - cardString << "Eight"; - break; - case 5: - cardString << "Seven"; - break; - case 4: - cardString << "Six"; - break; - case 3: - cardString << "Five"; - break; - case 2: - cardString << "Four"; - break; - case 1: - cardString << "Three"; - break; - case 0: - cardString << "Deuce"; - break; - default: - cardString << "ERROR"; - } - //Kicker 2 - switch(fourthPart) { - case 12: - cardString << "Ace"; - break; - case 11: - cardString << "King"; - break; - case 10: - cardString << "Queen"; - break; - case 9: - cardString << "Jack"; - break; - case 8: - cardString << "Ten"; - break; - case 7: - cardString << "Nine"; - break; - case 6: - cardString << "Eight"; - break; - case 5: - cardString << "Seven"; - break; - case 4: - cardString << "Six"; - break; - case 3: - cardString << "Five"; - break; - case 2: - cardString << "Four"; - break; - case 1: - cardString << "Three"; - break; - case 0: - cardString << "Deuce"; - break; - default: - cardString << "ERROR"; - } - //Kicker 3 - switch(fifthPart) { - case 12: - cardString << "Ace"; - break; - case 11: - cardString << "King"; - break; - case 10: - cardString << "Queen"; - break; - case 9: - cardString << "Jack"; - break; - case 8: - cardString << "Ten"; - break; - case 7: - cardString << "Nine"; - break; - case 6: - cardString << "Eight"; - break; - case 5: - cardString << "Seven"; - break; - case 4: - cardString << "Six"; - break; - case 3: - cardString << "Five"; - break; - case 2: - cardString << "Four"; - break; - case 1: - cardString << "Three"; - break; - case 0: - cardString << "Deuce"; - break; - default: - cardString << "ERROR"; - } - } - break; - // Highest Card - case 0: { - cardString << "High Card, "; - // Kicker 1 - switch(secondPart) { - case 12: - cardString << "Ace"; - break; - case 11: - cardString << "King"; - break; - case 10: - cardString << "Queen"; - break; - case 9: - cardString << "Jack"; - break; - case 8: - cardString << "Ten"; - break; - case 7: - cardString << "Nine"; - break; - case 6: - cardString << "Eight"; - break; - case 5: - cardString << "Seven"; - break; - case 4: - cardString << "Six"; - break; - case 3: - cardString << "Five"; - break; - case 2: - cardString << "Four"; - break; - case 1: - cardString << "Three"; - break; - case 0: - cardString << "Deuces"; - break; - default: - cardString << "ERROR"; - } - // Kicker 2 - switch(thirdPart) { - case 12: - cardString << "Ace"; - break; - case 11: - cardString << "King"; - break; - case 10: - cardString << "Queen"; - break; - case 9: - cardString << "Jack"; - break; - case 8: - cardString << "Ten"; - break; - case 7: - cardString << "Nine"; - break; - case 6: - cardString << "Eight"; - break; - case 5: - cardString << "Seven"; - break; - case 4: - cardString << "Six"; - break; - case 3: - cardString << "Five"; - break; - case 2: - cardString << "Four"; - break; - case 1: - cardString << "Three"; - break; - case 0: - cardString << "Deuce"; - break; - default: - cardString << "ERROR"; - } - //Kicker 3 - switch(fourthPart) { - case 12: - cardString << "Ace"; - break; - case 11: - cardString << "King"; - break; - case 10: - cardString << "Queen"; - break; - case 9: - cardString << "Jack"; - break; - case 8: - cardString << "Ten"; - break; - case 7: - cardString << "Nine"; - break; - case 6: - cardString << "Eight"; - break; - case 5: - cardString << "Seven"; - break; - case 4: - cardString << "Six"; - break; - case 3: - cardString << "Five"; - break; - case 2: - cardString << "Four"; - break; - case 1: - cardString << "Three"; - break; - case 0: - cardString << "Deuce"; - break; - default: - cardString << "ERROR"; - } - //Kicker 4 - switch(fifthPartA) { - case 9: - cardString << "Jack"; - break; - case 8: - cardString << "Ten"; - break; - case 7: - cardString << "Nine"; - break; - case 6: - cardString << "Eight"; - break; - case 5: - cardString << "Seven"; - break; - case 4: - cardString << "Six"; - break; - case 3: - cardString << "Five"; - break; - case 2: - cardString << "Four"; - break; - case 1: - cardString << "Three"; - break; - case 0: - cardString << "Deuce"; - break; - default: - cardString << "ERROR"; - } - //Kicker 5 - switch(fifthPartB) { - case 9: - cardString << "Jack"; - break; - case 8: - cardString << "Ten"; - break; - case 7: - cardString << "Nine"; - break; - case 6: - cardString << "Eight"; - break; - case 5: - cardString << "Seven"; - break; - case 4: - cardString << "Six"; - break; - case 3: - cardString << "Five"; - break; - case 2: - cardString << "Four"; - break; - case 1: - cardString << "Three"; - break; - case 0: - cardString << "Deuce"; - break; - default: - cardString << "ERROR"; - } - } - break; - default: - cardString << "ERROR"; - - } - - return cardString; - -} - -QString guiLog::determineHandName(int myCardsValueInt) -{ - - list shownCardsValueInt; - list sameHandCardsValueInt; - bool different = false; - bool equal = false; - boost::shared_ptr currentGame = myW->getSession()->getCurrentGame(); - PlayerListConstIterator it_c; - PlayerList activePlayerList = currentGame->getActivePlayerList(); - - // collect cardsValueInt of all players who will show their cards - for(it_c=activePlayerList->begin(); it_c!=activePlayerList->end(); ++it_c) { - - if( (*it_c)->getMyAction() != PLAYER_ACTION_FOLD) { - shownCardsValueInt.push_back( (*it_c)->getMyCardsValueInt()); - } - } - - // erase own cardsValueInt - list::iterator it; - for(it = shownCardsValueInt.begin(); it != shownCardsValueInt.end(); ++it) { - if((*it) == myCardsValueInt) { - shownCardsValueInt.erase(it); - break; - } - } - - QString handName; - - switch(myCardsValueInt/100000000) { - // Royal Flush - case 9: { - handName = translateCardsValueCode(myCardsValueInt).at(0); - } - break; - // Straight Flush - case 8: { - handName = translateCardsValueCode(myCardsValueInt).at(0)+translateCardsValueCode(myCardsValueInt).at(1); - } - break; - // Four of a kind - case 7: { - - handName = translateCardsValueCode(myCardsValueInt).at(0)+translateCardsValueCode(myCardsValueInt).at(1); - - // same hand detection - for(it = shownCardsValueInt.begin(); it != shownCardsValueInt.end(); ++it) { - if(((*it)/1000000) == (myCardsValueInt/1000000)) { - sameHandCardsValueInt.push_back(*it); - } - } - - // 1.same hands existing - if(!(sameHandCardsValueInt.empty())) { - // first kicker? - for(it = sameHandCardsValueInt.begin(); it != sameHandCardsValueInt.end(); ) { - if(((*it)/10000) == (myCardsValueInt/10000)) { - equal = true; - ++it; - } else { - different = true; - it = sameHandCardsValueInt.erase(it); - } - } - if(different) { - handName += ", fifth card " + translateCardsValueCode(myCardsValueInt).at(2); - } - - } - - } - break; - // Full House - case 6: { - handName = translateCardsValueCode(myCardsValueInt).at(0)+translateCardsValueCode(myCardsValueInt).at(1)+translateCardsValueCode(myCardsValueInt).at(2); - } - break; - // Flush - case 5: { - - handName = translateCardsValueCode(myCardsValueInt).at(0)+translateCardsValueCode(myCardsValueInt).at(1); - - // same hand detection - for(it = shownCardsValueInt.begin(); it != shownCardsValueInt.end(); ++it) { - if(((*it)/1000000) == (myCardsValueInt/1000000)) { - sameHandCardsValueInt.push_back(*it); - } - } - - // 1.same hands existing - if(!(sameHandCardsValueInt.empty())) { - // first kicker? - for(it = sameHandCardsValueInt.begin(); it != sameHandCardsValueInt.end(); ) { - if(((*it)/10000) == (myCardsValueInt/10000)) { - equal = true; - ++it; - } else { - different = true; - it = sameHandCardsValueInt.erase(it); - } - } - if(different) { - handName += ", second card " + translateCardsValueCode(myCardsValueInt).at(2); - } - // 2.there are still same hands - if(equal) { - different = false; - equal = false; - // second kicker? - for(it = sameHandCardsValueInt.begin(); it != sameHandCardsValueInt.end(); ) { - if(((*it)/100) == (myCardsValueInt/100)) { - equal = true; - ++it; - } else { - different = true; - it = sameHandCardsValueInt.erase(it); - } - } - if(different) { - handName += ", third card " + translateCardsValueCode(myCardsValueInt).at(3); - } - // 3.there are still same hands - if(equal) { - different = false; - equal = false; - // third kicker? - for(it = sameHandCardsValueInt.begin(); it != sameHandCardsValueInt.end(); ) { - if(((*it)/10) == (myCardsValueInt/10)) { - equal = true; - ++it; - } else { - different = true; - it = sameHandCardsValueInt.erase(it); - } - } - if(different) { - handName += ", fourth card " + translateCardsValueCode(myCardsValueInt).at(4); - } - // 4.there are still same hands - if(equal) { - different = false; - equal = false; - // third kicker? - for(it = sameHandCardsValueInt.begin(); it != sameHandCardsValueInt.end(); ) { - if((*it) == myCardsValueInt) { - equal = true; - ++it; - } else { - different = true; - it = sameHandCardsValueInt.erase(it); - } - } - if(different) { - handName += ", fifth card " + translateCardsValueCode(myCardsValueInt).at(5); - } - } - } - } - } - - } - break; - // Straight - case 4: { - handName = translateCardsValueCode(myCardsValueInt).at(0)+translateCardsValueCode(myCardsValueInt).at(1); - } - break; - // Three of a kind - case 3: { - handName = translateCardsValueCode(myCardsValueInt).at(0)+translateCardsValueCode(myCardsValueInt).at(1); - - // same hand detection - for(it = shownCardsValueInt.begin(); it != shownCardsValueInt.end(); ++it) { - if(((*it)/1000000) == (myCardsValueInt/1000000)) { - sameHandCardsValueInt.push_back(*it); - } - } - - // 1.same hands existing - if(!(sameHandCardsValueInt.empty())) { - // first kicker? - for(it = sameHandCardsValueInt.begin(); it != sameHandCardsValueInt.end(); ) { - if(((*it)/10000) == (myCardsValueInt/10000)) { - equal = true; - ++it; - } else { - different = true; - it = sameHandCardsValueInt.erase(it); - } - } - if(different) { - handName += ", fourth card " + translateCardsValueCode(myCardsValueInt).at(2); - } - // 2.there are still same hands - if(equal) { - different = false; - equal = false; - // second kicker? - for(it = sameHandCardsValueInt.begin(); it != sameHandCardsValueInt.end(); ) { - if(((*it)/100) == (myCardsValueInt/100)) { - equal = true; - ++it; - } else { - different = true; - it = sameHandCardsValueInt.erase(it); - } - } - if(different) { - handName += ", fifth card " + translateCardsValueCode(myCardsValueInt).at(3); - } - } - } - - } - break; - // Two Pairs - case 2: { - - handName = translateCardsValueCode(myCardsValueInt).at(0)+translateCardsValueCode(myCardsValueInt).at(1)+translateCardsValueCode(myCardsValueInt).at(2); - - // same hand detection - for(it = shownCardsValueInt.begin(); it != shownCardsValueInt.end(); ++it) { - if(((*it)/10000) == (myCardsValueInt/10000)) { - sameHandCardsValueInt.push_back(*it); - } - } - - // 1.same hands existing - if(!(sameHandCardsValueInt.empty())) { - // first kicker? - for(it = sameHandCardsValueInt.begin(); it != sameHandCardsValueInt.end(); ) { - if(((*it)/100) == (myCardsValueInt/100)) { - equal = true; - ++it; - } else { - different = true; - it = sameHandCardsValueInt.erase(it); - } - } - if(different) { - handName += ", fifth card " + translateCardsValueCode(myCardsValueInt).at(3); - } - - } - - } - break; - // Pair - case 1: { - - handName = translateCardsValueCode(myCardsValueInt).at(0)+translateCardsValueCode(myCardsValueInt).at(1); - - // same hand detection - for(it = shownCardsValueInt.begin(); it != shownCardsValueInt.end(); ++it) { - if(((*it)/1000000) == (myCardsValueInt/1000000)) { - sameHandCardsValueInt.push_back(*it); - } - } - - // 1.same hands existing - if(!(sameHandCardsValueInt.empty())) { - // first kicker? - for(it = sameHandCardsValueInt.begin(); it != sameHandCardsValueInt.end(); ) { - if(((*it)/10000) == (myCardsValueInt/10000)) { - equal = true; - ++it; - } else { - different = true; - it = sameHandCardsValueInt.erase(it); - } - } - if(different) { - handName += ", third card " + translateCardsValueCode(myCardsValueInt).at(2); - } - // 2.there are still same hands - if(equal) { - different = false; - equal = false; - // second kicker? - for(it = sameHandCardsValueInt.begin(); it != sameHandCardsValueInt.end(); ) { - if(((*it)/100) == (myCardsValueInt/100)) { - equal = true; - ++it; - } else { - different = true; - it = sameHandCardsValueInt.erase(it); - } - } - if(different) { - handName += ", fourth card " + translateCardsValueCode(myCardsValueInt).at(3); - } - // 3.there are still same hands - if(equal) { - different = false; - equal = false; - // third kicker? - for(it = sameHandCardsValueInt.begin(); it != sameHandCardsValueInt.end(); ) { - if((*it) == myCardsValueInt) { - equal = true; - ++it; - } else { - different = true; - it = sameHandCardsValueInt.erase(it); - } - } - if(different) { - handName += ", fifth card " + translateCardsValueCode(myCardsValueInt).at(4); - } - } - } - } - - } - break; - // highestCard - case 0: { - - handName = translateCardsValueCode(myCardsValueInt).at(0)+translateCardsValueCode(myCardsValueInt).at(1); - - // same hand detection - for(it = shownCardsValueInt.begin(); it != shownCardsValueInt.end(); ++it) { - if(((*it)/1000000) == (myCardsValueInt/1000000)) { - sameHandCardsValueInt.push_back(*it); - } - } - - // 1.same hands existing - if(!(sameHandCardsValueInt.empty())) { - // first kicker? - for(it = sameHandCardsValueInt.begin(); it != sameHandCardsValueInt.end(); ) { - if(((*it)/10000) == (myCardsValueInt/10000)) { - equal = true; - ++it; - } else { - different = true; - it = sameHandCardsValueInt.erase(it); - } - } - if(different) { - handName += ", second card " + translateCardsValueCode(myCardsValueInt).at(2); - } - // 2.there are still same hands - if(equal) { - different = false; - equal = false; - // second kicker? - for(it = sameHandCardsValueInt.begin(); it != sameHandCardsValueInt.end(); ) { - if(((*it)/100) == (myCardsValueInt/100)) { - equal = true; - ++it; - } else { - different = true; - it = sameHandCardsValueInt.erase(it); - } - } - if(different) { - handName += ", third card " + translateCardsValueCode(myCardsValueInt).at(3); - } - // 3.there are still same hands - if(equal) { - different = false; - equal = false; - // third kicker? - for(it = sameHandCardsValueInt.begin(); it != sameHandCardsValueInt.end(); ) { - if(((*it)/10) == (myCardsValueInt/10)) { - equal = true; - ++it; - } else { - different = true; - it = sameHandCardsValueInt.erase(it); - } - } - if(different) { - handName += ", fourth card " + translateCardsValueCode(myCardsValueInt).at(4); - } - // 4.there are still same hands - if(equal) { - different = false; - equal = false; - // third kicker? - for(it = sameHandCardsValueInt.begin(); it != sameHandCardsValueInt.end(); ) { - if((*it) == myCardsValueInt) { - equal = true; - ++it; - } else { - different = true; - it = sameHandCardsValueInt.erase(it); - } - } - if(different) { - handName += ", fifth card " + translateCardsValueCode(myCardsValueInt).at(5); - } - } - } - } - } - - } - break; - default: - {} - } - - return handName; - -} - void guiLog::writeLogFileStream(QString streamString) { diff --git a/src/gui/qt/gametable/log/guilog.h b/src/gui/qt/gametable/log/guilog.h index 8a01aa85..fe06b4b1 100644 --- a/src/gui/qt/gametable/log/guilog.h +++ b/src/gui/qt/gametable/log/guilog.h @@ -59,9 +59,7 @@ public slots: public: - QStringList translateCardsValueCode(int cardsValueCode); QStringList translateCardCode(int cardCode); - QString determineHandName(int cardsValueInt); void writeLogFileStream(QString string);