kicker detection (II) - highest card
This commit is contained in:
@@ -14,7 +14,7 @@
|
|||||||
using namespace std;
|
using namespace std;
|
||||||
|
|
||||||
LocalBeRo::LocalBeRo(HandInterface* hi, int id, int qP, int dP, int sB, GameState gS)
|
LocalBeRo::LocalBeRo(HandInterface* hi, int id, int qP, int dP, int sB, GameState gS)
|
||||||
: BeRoInterface(), myHand(hi), myBeRoID(gS), myID(id), actualQuantityPlayers(qP), dealerPosition(dP), smallBlindPosition(0), smallBlind(sB), highestSet(0), firstRun(1), firstRound(1), firstHeadsUpRound(1), playersTurn(dP), logBoardCardsDone(0), minimumRaise(2*sB)
|
: BeRoInterface(), myHand(hi), myBeRoID(gS), myID(id), actualQuantityPlayers(qP), dealerPosition(dP), smallBlindPosition(0), smallBlind(sB), highestSet(0), minimumRaise(2*sB), firstRun(1), firstRound(1), firstHeadsUpRound(1), playersTurn(dP), logBoardCardsDone(0)
|
||||||
{
|
{
|
||||||
|
|
||||||
int i;
|
int i;
|
||||||
|
|||||||
+176
-109
@@ -958,101 +958,101 @@ QStringList Log::translateCardsValueCode(int cardsValueCode) {
|
|||||||
}
|
}
|
||||||
// Kicker 2
|
// Kicker 2
|
||||||
switch(thirdPart) {
|
switch(thirdPart) {
|
||||||
case 12: cardString << ", Ace kicker";
|
case 12: cardString << "Ace";
|
||||||
break;
|
break;
|
||||||
case 11: cardString << ", King kicker";
|
case 11: cardString << "King";
|
||||||
break;
|
break;
|
||||||
case 10: cardString << ", Queen kicker";
|
case 10: cardString << "Queen";
|
||||||
break;
|
break;
|
||||||
case 9: cardString << ", Jack kicker";
|
case 9: cardString << "Jack";
|
||||||
break;
|
break;
|
||||||
case 8: cardString << ", Ten kicker";
|
case 8: cardString << "Ten";
|
||||||
break;
|
break;
|
||||||
case 7: cardString << ", Nine kicker";
|
case 7: cardString << "Nine";
|
||||||
break;
|
break;
|
||||||
case 6: cardString << ", Eight kicker";
|
case 6: cardString << "Eight";
|
||||||
break;
|
break;
|
||||||
case 5: cardString << ", Seven kicker";
|
case 5: cardString << "Seven";
|
||||||
break;
|
break;
|
||||||
case 4: cardString << ", Six kicker";
|
case 4: cardString << "Six";
|
||||||
break;
|
break;
|
||||||
case 3: cardString << ", Five kicker";
|
case 3: cardString << "Five";
|
||||||
break;
|
break;
|
||||||
case 2: cardString << ", Four kicker";
|
case 2: cardString << "Four";
|
||||||
break;
|
break;
|
||||||
case 1: cardString << ", Three kicker";
|
case 1: cardString << "Three";
|
||||||
break;
|
break;
|
||||||
default: cardString << "ERROR";
|
default: cardString << "ERROR";
|
||||||
}
|
}
|
||||||
//Kicker 3
|
//Kicker 3
|
||||||
switch(fourthPart) {
|
switch(fourthPart) {
|
||||||
case 12: cardString << ", Ace kicker";
|
case 12: cardString << "Ace";
|
||||||
break;
|
break;
|
||||||
case 11: cardString << ", King kicker";
|
case 11: cardString << "King";
|
||||||
break;
|
break;
|
||||||
case 10: cardString << ", Queen kicker";
|
case 10: cardString << "Queen";
|
||||||
break;
|
break;
|
||||||
case 9: cardString << ", Jack kicker";
|
case 9: cardString << "Jack";
|
||||||
break;
|
break;
|
||||||
case 8: cardString << ", Ten kicker";
|
case 8: cardString << "Ten";
|
||||||
break;
|
break;
|
||||||
case 7: cardString << ", Nine kicker";
|
case 7: cardString << "Nine";
|
||||||
break;
|
break;
|
||||||
case 6: cardString << ", Eight kicker";
|
case 6: cardString << "Eight";
|
||||||
break;
|
break;
|
||||||
case 5: cardString << ", Seven kicker";
|
case 5: cardString << "Seven";
|
||||||
break;
|
break;
|
||||||
case 4: cardString << ", Six kicker";
|
case 4: cardString << "Six";
|
||||||
break;
|
break;
|
||||||
case 3: cardString << ", Five kicker";
|
case 3: cardString << "Five";
|
||||||
break;
|
break;
|
||||||
case 2: cardString << ", Four kicker";
|
case 2: cardString << "Four";
|
||||||
break;
|
break;
|
||||||
case 1: cardString << ", Three kicker";
|
case 1: cardString << "Three";
|
||||||
break;
|
break;
|
||||||
default: cardString << "ERROR";
|
default: cardString << "ERROR";
|
||||||
}
|
}
|
||||||
//Kicker 4
|
//Kicker 4
|
||||||
switch(fifthPartA) {
|
switch(fifthPartA) {
|
||||||
case 9: cardString << ", Jack kicker";
|
case 9: cardString << "Jack";
|
||||||
break;
|
break;
|
||||||
case 8: cardString << ", Ten kicker";
|
case 8: cardString << "Ten";
|
||||||
break;
|
break;
|
||||||
case 7: cardString << ", Nine kicker";
|
case 7: cardString << "Nine";
|
||||||
break;
|
break;
|
||||||
case 6: cardString << ", Eight kicker";
|
case 6: cardString << "Eight";
|
||||||
break;
|
break;
|
||||||
case 5: cardString << ", Seven kicker";
|
case 5: cardString << "Seven";
|
||||||
break;
|
break;
|
||||||
case 4: cardString << ", Six kicker";
|
case 4: cardString << "Six";
|
||||||
break;
|
break;
|
||||||
case 3: cardString << ", Five kicker";
|
case 3: cardString << "Five";
|
||||||
break;
|
break;
|
||||||
case 2: cardString << ", Four kicker";
|
case 2: cardString << "Four";
|
||||||
break;
|
break;
|
||||||
case 1: cardString << ", Three kicker";
|
case 1: cardString << "Three";
|
||||||
break;
|
break;
|
||||||
default: cardString << "ERROR";
|
default: cardString << "ERROR";
|
||||||
}
|
}
|
||||||
//Kicker 5
|
//Kicker 5
|
||||||
switch(fifthPartB) {
|
switch(fifthPartB) {
|
||||||
case 9: cardString << ", Jack kicker";
|
case 9: cardString << "Jack";
|
||||||
break;
|
break;
|
||||||
case 8: cardString << ", Ten kicker";
|
case 8: cardString << "Ten";
|
||||||
break;
|
break;
|
||||||
case 7: cardString << ", Nine kicker";
|
case 7: cardString << "Nine";
|
||||||
break;
|
break;
|
||||||
case 6: cardString << ", Eight kicker";
|
case 6: cardString << "Eight";
|
||||||
break;
|
break;
|
||||||
case 5: cardString << ", Seven kicker";
|
case 5: cardString << "Seven";
|
||||||
break;
|
break;
|
||||||
case 4: cardString << ", Six kicker";
|
case 4: cardString << "Six";
|
||||||
break;
|
break;
|
||||||
case 3: cardString << ", Five kicker";
|
case 3: cardString << "Five";
|
||||||
break;
|
break;
|
||||||
case 2: cardString << ", Four kicker";
|
case 2: cardString << "Four";
|
||||||
break;
|
break;
|
||||||
case 1: cardString << ", Three kicker";
|
case 1: cardString << "Three";
|
||||||
break;
|
break;
|
||||||
default: cardString << "ERROR";
|
default: cardString << "ERROR";
|
||||||
}
|
}
|
||||||
@@ -1068,113 +1068,180 @@ QStringList Log::translateCardsValueCode(int cardsValueCode) {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
QString Log::determineHandName(int cardsValueInt) {
|
QString Log::determineHandName(int myCardsValueInt) {
|
||||||
|
|
||||||
|
size_t i;
|
||||||
|
|
||||||
|
list<int> shownCardsValueInt;
|
||||||
|
list<int> sameHandCardsValueInt;
|
||||||
|
bool different = false;
|
||||||
|
bool equal = false;
|
||||||
|
|
||||||
// collect cardsValueInt of all players who will show their cards
|
// collect cardsValueInt of all players who will show their cards
|
||||||
// myW->getSession()->getCurrentGame();
|
HandInterface *currentHand = myW->getSession().getCurrentGame()->getCurrentHand();
|
||||||
|
for(i=0; i<MAX_NUMBER_OF_PLAYERS; i++) {
|
||||||
|
if(currentHand->getPlayerArray()[i]->getMyActiveStatus() && currentHand->getPlayerArray()[i]->getMyAction() != PLAYER_ACTION_FOLD) {
|
||||||
|
shownCardsValueInt.push_back(currentHand->getPlayerArray()[i]->getMyCardsValueInt());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// erase own cardsValueInt
|
||||||
|
list<int>::iterator it;
|
||||||
|
for(it = shownCardsValueInt.begin(); it != shownCardsValueInt.end(); it++) {
|
||||||
|
if((*it) == myCardsValueInt) {
|
||||||
|
shownCardsValueInt.erase(it);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// for(it = shownCardsValueInt.begin(); it != shownCardsValueInt.end(); it++) {
|
||||||
|
// cout << *it << endl;
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// cout << endl;
|
||||||
|
|
||||||
QString handName;
|
QString handName;
|
||||||
|
|
||||||
|
switch(myCardsValueInt/100000000) {
|
||||||
|
|
||||||
// int sameHandCounter = 0;
|
|
||||||
// int difference = 0;
|
|
||||||
// int tempHighestCardsValueInt = 0;
|
|
||||||
//
|
|
||||||
// //erste Ziffer : Blattname
|
|
||||||
// int firstPart = cardsValueInt/100000000;
|
|
||||||
// //zweite und dritte Ziffer : Kicker, highest Card, usw.
|
|
||||||
// int secondPart = cardsValueInt/1000000 - firstPart*100;
|
|
||||||
// //vierte und fünfte Ziffer
|
|
||||||
// int thirdPart = cardsValueInt/10000 - firstPart*10000 - secondPart*100;
|
|
||||||
// // usw
|
|
||||||
// int fourthPart = cardsValueInt/100 - firstPart*1000000 - secondPart*10000 - thirdPart*100;
|
|
||||||
// //
|
|
||||||
// int fifthPart = cardsValueInt - firstPart*100000000 - secondPart*1000000 - thirdPart*10000 - fourthPart*100;
|
|
||||||
// // fuer highest Card
|
|
||||||
// int fifthPartA = cardsValueInt/10 - firstPart*10000000 - secondPart*100000 - thirdPart*1000 - fourthPart*10;
|
|
||||||
// int fifthPartB = cardsValueInt - firstPart*100000000 - secondPart*1000000 - thirdPart*10000 - fourthPart*100 - fifthPartA*10;
|
|
||||||
|
|
||||||
switch(cardsValueInt/100000000) {
|
|
||||||
// Royal Flush
|
// Royal Flush
|
||||||
case 9: {
|
case 9: {
|
||||||
handName = translateCardsValueCode(cardsValueInt).at(0);
|
handName = translateCardsValueCode(myCardsValueInt).at(0);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
// Straight Flush
|
// Straight Flush
|
||||||
case 8: {
|
case 8: {
|
||||||
handName = translateCardsValueCode(cardsValueInt).at(0)+translateCardsValueCode(cardsValueInt).at(1);
|
handName = translateCardsValueCode(myCardsValueInt).at(0)+translateCardsValueCode(myCardsValueInt).at(1);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
// Vierling
|
// Four of a kind
|
||||||
case 7: {
|
case 7: {
|
||||||
handName = translateCardsValueCode(cardsValueInt).at(0)+translateCardsValueCode(cardsValueInt).at(1);
|
handName = translateCardsValueCode(myCardsValueInt).at(0)+translateCardsValueCode(myCardsValueInt).at(1);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
// Full House
|
// Full House
|
||||||
case 6: {
|
case 6: {
|
||||||
handName = translateCardsValueCode(cardsValueInt).at(0)+translateCardsValueCode(cardsValueInt).at(1)+translateCardsValueCode(cardsValueInt).at(2);
|
handName = translateCardsValueCode(myCardsValueInt).at(0)+translateCardsValueCode(myCardsValueInt).at(1)+translateCardsValueCode(myCardsValueInt).at(2);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
// Flush
|
// Flush
|
||||||
case 5: {
|
case 5: {
|
||||||
handName = translateCardsValueCode(cardsValueInt).at(0)+translateCardsValueCode(cardsValueInt).at(1);
|
handName = translateCardsValueCode(myCardsValueInt).at(0)+translateCardsValueCode(myCardsValueInt).at(1);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
// Straight
|
// Straight
|
||||||
case 4: {
|
case 4: {
|
||||||
handName = translateCardsValueCode(cardsValueInt).at(0)+translateCardsValueCode(cardsValueInt).at(1);
|
handName = translateCardsValueCode(myCardsValueInt).at(0)+translateCardsValueCode(myCardsValueInt).at(1);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
// Drilling
|
// Three of a kind
|
||||||
case 3: {
|
case 3: {
|
||||||
|
handName = translateCardsValueCode(myCardsValueInt).at(0)+translateCardsValueCode(myCardsValueInt).at(1);
|
||||||
// Kicker anzeigen?
|
|
||||||
// for(i=0; i<5; i++) {
|
|
||||||
// if(currentHand->getPlayerArray()[i]->getMyAction() != 1 && currentHand->getPlayerArray()[i]->getMyActiveStatus() == 1 && currentHand->getPlayerArray()[i]->getMyCardsValueInt()/100000000 == 3 && currentHand->getPlayerArray()[i]->getMyCardsValueInt()/1000000 - (int)(currentHand->getPlayerArray()[i]->getMyCardsValueInt()/100000000)*100 == secondPart) {
|
|
||||||
// sameHandCounter++;
|
|
||||||
// if(currentHand->getPlayerArray()[i]->getMyCardsValueInt() > tempHighestCardsValueInt) {
|
|
||||||
// tempHighestCardsValueInt = currentHand->getPlayerArray()[i]->getMyCardsValueInt();
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
|
|
||||||
// Unterschied ermitteln
|
|
||||||
// for(i=0; i<5; i++) {
|
|
||||||
// if(currentHand->getPlayerArray()[i]->getMyAction() != 1 && currentHand->getPlayerArray()[i]->getMyActiveStatus() == 1 && currentHand->getPlayerArray()[i]->getMyCardsValueInt()/100000000 == 3 && currentHand->getPlayerArray()[i]->getMyCardsValueInt()/1000000 - (int)(currentHand->getPlayerArray()[i]->getMyCardsValueInt()/100000000)*100 == secondPart) {
|
|
||||||
// sameHandCounter++;
|
|
||||||
// if(currentHand->getPlayerArray()[i]->getMyCardsValueInt() > tempHighestCardsValueInt) {
|
|
||||||
// tempHighestCardsValueInt = currentHand->getPlayerArray()[i]->getMyCardsValueInt();
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
|
|
||||||
|
|
||||||
// if(sameHandCounter==1) {
|
|
||||||
handName = translateCardsValueCode(cardsValueInt).at(0)+translateCardsValueCode(cardsValueInt).at(1);
|
|
||||||
/* } else {
|
|
||||||
if(cardsValueInt == tempHighestCardsValueInt) {
|
|
||||||
for(i=0; i<5; i++) {
|
|
||||||
if(currentHand->getPlayerArray()[i]->getMyAction() != 1 && currentHand->getPlayerArray()[i]->getMyActiveStatus() == 1 && currentHand->getPlayerArray()[i]->getMyCardsValueInt()/100000000 == 3 && currentHand->getPlayerArray()[i]->getMyCardsValueInt()/1000000 - (int)(currentHand->getPlayerArray()[i]->getMyCardsValueInt()/100000000)*100 == secondPart) ;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}*/
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
// Doppelpaar
|
// Two Pairs
|
||||||
case 2: {
|
case 2: {
|
||||||
handName = translateCardsValueCode(cardsValueInt).at(0)+translateCardsValueCode(cardsValueInt).at(1)+translateCardsValueCode(cardsValueInt).at(2);
|
handName = translateCardsValueCode(myCardsValueInt).at(0)+translateCardsValueCode(myCardsValueInt).at(1)+translateCardsValueCode(myCardsValueInt).at(2);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
// Paar
|
// Pair
|
||||||
case 1: {
|
case 1: {
|
||||||
handName = translateCardsValueCode(cardsValueInt).at(0)+translateCardsValueCode(cardsValueInt).at(1);
|
handName = translateCardsValueCode(myCardsValueInt).at(0)+translateCardsValueCode(myCardsValueInt).at(1);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
// highestCard
|
// highestCard
|
||||||
case 0: {
|
case 0: {
|
||||||
handName = translateCardsValueCode(cardsValueInt).at(0)+translateCardsValueCode(cardsValueInt).at(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(); it++) {
|
||||||
|
if(((*it)/10000) == (myCardsValueInt/10000)) {
|
||||||
|
equal = true;
|
||||||
|
} else {
|
||||||
|
different = true;
|
||||||
|
sameHandCardsValueInt.erase(it);
|
||||||
|
// last list element ?
|
||||||
|
if(sameHandCardsValueInt.empty()) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
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(); it++) {
|
||||||
|
if(((*it)/100) == (myCardsValueInt/100)) {
|
||||||
|
equal = true;
|
||||||
|
} else {
|
||||||
|
different = true;
|
||||||
|
sameHandCardsValueInt.erase(it);
|
||||||
|
// last list element ?
|
||||||
|
if(sameHandCardsValueInt.empty()) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
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(); it++) {
|
||||||
|
if(((*it)/10) == (myCardsValueInt/10)) {
|
||||||
|
equal = true;
|
||||||
|
} else {
|
||||||
|
different = true;
|
||||||
|
sameHandCardsValueInt.erase(it);
|
||||||
|
// last list element ?
|
||||||
|
if(sameHandCardsValueInt.empty()) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
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(); it++) {
|
||||||
|
if((*it) == myCardsValueInt) {
|
||||||
|
equal = true;
|
||||||
|
} else {
|
||||||
|
different = true;
|
||||||
|
sameHandCardsValueInt.erase(it);
|
||||||
|
// last list element ?
|
||||||
|
if(sameHandCardsValueInt.empty()) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(different) {
|
||||||
|
handName += ", fifth card " + translateCardsValueCode(myCardsValueInt).at(5);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
default: {}
|
default: {}
|
||||||
|
|||||||
Reference in New Issue
Block a user