kicker detection (III) - all possible hand

This commit is contained in:
floty
2007-09-03 14:42:49 +00:00
parent 32cf200c98
commit 8fbc376706
+508 -75
View File
@@ -447,9 +447,11 @@ QStringList Log::translateCardsValueCode(int cardsValueCode) {
switch (firstPart) { switch (firstPart) {
// Royal Flush
case 9: cardString << "Royal Flush"; case 9: cardString << "Royal Flush";
break; break;
// Straight Flush
case 8: { case 8: {
cardString << "Straight Flush, "; cardString << "Straight Flush, ";
switch(secondPart) { switch(secondPart) {
@@ -475,6 +477,7 @@ QStringList Log::translateCardsValueCode(int cardsValueCode) {
} }
} }
break; break;
// Four of a Kind
case 7: { case 7: {
cardString << "Four of a Kind, "; cardString << "Four of a Kind, ";
switch(secondPart) { switch(secondPart) {
@@ -506,8 +509,39 @@ QStringList Log::translateCardsValueCode(int cardsValueCode) {
break; break;
default: cardString << "ERROR"; 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; break;
// Full House
case 6: { case 6: {
cardString << "Full House, "; cardString << "Full House, ";
//Drilling //Drilling
@@ -572,6 +606,7 @@ QStringList Log::translateCardsValueCode(int cardsValueCode) {
} }
} }
break; break;
// Flush
case 5: { case 5: {
cardString << "Flush, "; cardString << "Flush, ";
//highest Card //highest Card
@@ -596,8 +631,117 @@ QStringList Log::translateCardsValueCode(int cardsValueCode) {
break; break;
default: cardString << "ERROR"; 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; break;
// Straight
case 4: { case 4: {
cardString << "Straight, "; cardString << "Straight, ";
switch(secondPart) { switch(secondPart) {
@@ -625,6 +769,7 @@ QStringList Log::translateCardsValueCode(int cardsValueCode) {
} }
} }
break; break;
// Three of a Kind
case 3: { case 3: {
cardString << "Three of a Kind, "; cardString << "Three of a Kind, ";
switch(secondPart) { switch(secondPart) {
@@ -658,62 +803,67 @@ QStringList Log::translateCardsValueCode(int cardsValueCode) {
} }
//Kicker 1 //Kicker 1
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;
case 0: cardString << "Deuce";
break; break;
default: cardString << "ERROR"; default: cardString << "ERROR";
} }
//Kicker 2 //Kicker 2
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;
case 0: cardString << "Deuce";
break; break;
default: cardString << "ERROR"; default: cardString << "ERROR";
} }
} }
break; break;
// Two Pairs
case 2: { case 2: {
cardString << "Two Pairs, "; cardString << "Two Pairs, ";
// erster Pair // erster Pair
@@ -778,34 +928,37 @@ QStringList Log::translateCardsValueCode(int cardsValueCode) {
} }
//Kicker //Kicker
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;
case 0: cardString << "Deuce";
break; break;
default: cardString << "ERROR"; default: cardString << "ERROR";
} }
} }
break; break;
// Pair
case 1: { case 1: {
cardString << "Pair, "; cardString << "Pair, ";
// Pair // Pair
@@ -840,90 +993,97 @@ QStringList Log::translateCardsValueCode(int cardsValueCode) {
} }
// Kicker 1 // Kicker 1
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;
case 0: cardString << "Deuce";
break; break;
default: cardString << "ERROR"; default: cardString << "ERROR";
} }
//Kicker 2 //Kicker 2
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;
case 0: cardString << "Deuce";
break; break;
default: cardString << "ERROR"; default: cardString << "ERROR";
} }
//Kicker 3 //Kicker 3
switch(fifthPart) { switch(fifthPart) {
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;
case 0: cardString << "Deuce";
break; break;
default: cardString << "ERROR"; default: cardString << "ERROR";
} }
} }
break; break;
// Highest Card
case 0: { case 0: {
cardString << "Highest Card, "; cardString << "Highest Card, ";
// Kicker 1 // Kicker 1
@@ -982,6 +1142,8 @@ QStringList Log::translateCardsValueCode(int cardsValueCode) {
break; break;
case 1: cardString << "Three"; case 1: cardString << "Three";
break; break;
case 0: cardString << "Deuce";
break;
default: cardString << "ERROR"; default: cardString << "ERROR";
} }
//Kicker 3 //Kicker 3
@@ -1010,6 +1172,8 @@ QStringList Log::translateCardsValueCode(int cardsValueCode) {
break; break;
case 1: cardString << "Three"; case 1: cardString << "Three";
break; break;
case 0: cardString << "Deuce";
break;
default: cardString << "ERROR"; default: cardString << "ERROR";
} }
//Kicker 4 //Kicker 4
@@ -1032,6 +1196,8 @@ QStringList Log::translateCardsValueCode(int cardsValueCode) {
break; break;
case 1: cardString << "Three"; case 1: cardString << "Three";
break; break;
case 0: cardString << "Deuce";
break;
default: cardString << "ERROR"; default: cardString << "ERROR";
} }
//Kicker 5 //Kicker 5
@@ -1054,6 +1220,8 @@ QStringList Log::translateCardsValueCode(int cardsValueCode) {
break; break;
case 1: cardString << "Three"; case 1: cardString << "Three";
break; break;
case 0: cardString << "Deuce";
break;
default: cardString << "ERROR"; default: cardString << "ERROR";
} }
} }
@@ -1062,8 +1230,6 @@ QStringList Log::translateCardsValueCode(int cardsValueCode) {
} }
return cardString; return cardString;
} }
@@ -1115,7 +1281,36 @@ QString Log::determineHandName(int myCardsValueInt) {
break; break;
// Four of a kind // Four of a kind
case 7: { case 7: {
handName = translateCardsValueCode(myCardsValueInt).at(0)+translateCardsValueCode(myCardsValueInt).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 += ", fifth card " + translateCardsValueCode(myCardsValueInt).at(2);
}
}
} }
break; break;
// Full House // Full House
@@ -1125,7 +1320,98 @@ QString Log::determineHandName(int myCardsValueInt) {
break; break;
// Flush // Flush
case 5: { case 5: {
handName = translateCardsValueCode(myCardsValueInt).at(0)+translateCardsValueCode(myCardsValueInt).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;
// Straight // Straight
@@ -1136,16 +1422,163 @@ QString Log::determineHandName(int myCardsValueInt) {
// Three of a kind // Three of a kind
case 3: { case 3: {
handName = translateCardsValueCode(myCardsValueInt).at(0)+translateCardsValueCode(myCardsValueInt).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 += ", 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(); it++) {
if(((*it)/100) == (myCardsValueInt/100)) {
equal = true;
} else {
different = true;
sameHandCardsValueInt.erase(it);
// last list element ?
if(sameHandCardsValueInt.empty()) {
break;
}
}
}
if(different) {
handName += ", fifth card " + translateCardsValueCode(myCardsValueInt).at(3);
}
}
}
} }
break; break;
// Two Pairs // Two Pairs
case 2: { case 2: {
handName = translateCardsValueCode(myCardsValueInt).at(0)+translateCardsValueCode(myCardsValueInt).at(1)+translateCardsValueCode(myCardsValueInt).at(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(); it++) {
if(((*it)/100) == (myCardsValueInt/100)) {
equal = true;
} else {
different = true;
sameHandCardsValueInt.erase(it);
// last list element ?
if(sameHandCardsValueInt.empty()) {
break;
}
}
}
if(different) {
handName += ", fifth card " + translateCardsValueCode(myCardsValueInt).at(3);
}
}
} }
break; break;
// Pair // Pair
case 1: { case 1: {
handName = translateCardsValueCode(myCardsValueInt).at(0)+translateCardsValueCode(myCardsValueInt).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 += ", 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(); it++) {
if(((*it)/100) == (myCardsValueInt/100)) {
equal = true;
} else {
different = true;
sameHandCardsValueInt.erase(it);
// last list element ?
if(sameHandCardsValueInt.empty()) {
break;
}
}
}
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(); 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(4);
}
}
}
}
} }
break; break;
// highestCard // highestCard