engine 0.4 rev6 (flop part 3)

This commit is contained in:
doitux
2007-03-22 23:19:16 +00:00
parent 0524691085
commit d5908bf8a1
2 changed files with 181 additions and 174 deletions
+180 -173
View File
@@ -686,7 +686,7 @@ void LocalPlayer::flopEngine() {
cout << myID << ": "; cout << myID << ": ";
flopCardsValue(tempArray,info); flopCardsValue(tempArray);
// aktive Situation --> check / bet // aktive Situation --> check / bet
if(actualHand->getFlop()->getHighestSet() == 0) { if(actualHand->getFlop()->getHighestSet() == 0) {
@@ -1309,13 +1309,16 @@ void LocalPlayer::riverEngine() {
int LocalPlayer::flopCardsValue(int* cards, int* info) { int LocalPlayer::flopCardsValue(int* cards) {
int array[5][3]; int array[5][3];
int j1, j2, j3, j4, k1, k2, ktemp[3]; int j1, j2, j3, j4, k1, k2, ktemp[3];
int tempChance = 0; int temp = 0;
int temp1 = 0;
int temp2 = 0;
int temp2Array[2];
int tempValue;
bool breakLoop = 0; bool breakLoop = 0;
info[3] = 0;
// Kartenwerte umwandeln (z.B. [ 11 (Karo Kig) -> 0 11 ] oder [ 31 (Pik 7) -> 2 5 ] ) // Kartenwerte umwandeln (z.B. [ 11 (Karo Kig) -> 0 11 ] oder [ 31 (Pik 7) -> 2 5 ] )
for(j1=0; j1<5; j1++) { for(j1=0; j1<5; j1++) {
@@ -1363,28 +1366,19 @@ int LocalPlayer::flopCardsValue(int* cards, int* info) {
if(array[0][0] == array[1][0] && array[0][0] == array[2][0] && array[0][0] == array[3][0] && array[0][0] == array[4][0]) { if(array[0][0] == array[1][0] && array[0][0] == array[2][0] && array[0][0] == array[3][0] && array[0][0] == array[4][0]) {
// Straight Flush? // Straight Flush?
if(array[0][1]-4 == array[4][1]) { if(array[0][1]-4 == array[4][1]) {
info[0] = 8; cout << "Straight Flush";
info[1] = array[0][1]; return 80000;
info[3] = 2;
cout << "Straight Flush " << info[3] << endl;
return 0;
} }
else { else {
// Straight Flush Ausnahme: 5-4-3-2-A // Straight Flush Ausnahme: 5-4-3-2-A
if(array[0][1]==12 && array[1][1]==3 && array[2][1]==2 && array[3][1]==1 && array[4][1]==0) { if(array[0][1]==12 && array[1][1]==3 && array[2][1]==2 && array[3][1]==1 && array[4][1]==0) {
info[0] = 8; cout << "Straight Flush Ass unten";
info[1] = 3; return 80000;
info[3] = 2;
cout << "Straight Flush Ass unten " << info[3] << endl;
return 0;
} }
// Flush // Flush
else { else {
info[0] = 5; cout << "Flush";
info[1] = array[j1][1]; return 80000;
info[3] = 2;
cout << "Flush " << info[3] << endl;
return 0;
} }
} }
} }
@@ -1397,51 +1391,74 @@ int LocalPlayer::flopCardsValue(int* cards, int* info) {
if(array[j1][1]-3 == array[j1+3][1]) { if(array[j1][1]-3 == array[j1+3][1]) {
// Strassenansatz am Rand? // Strassenansatz am Rand?
if(array[j1][1] == 12) { if(array[j1][1] == 12) {
tempChance += 45; cout << "zusammenhaengender Straight-Flush-Draw mit Ass high";
for(j2=0; j2<4; j2++) { for(j2=0; j2<4; j2++) {
if(array[j1+j2][2] <= 1) info[3]++; if(array[j1+j2][2] <= 1) temp++;
} }
cout << "zusammenhaengender Straight-Flush-Draw mit Ass high " << info[3] << "\t"; return (70012 + temp*100);
breakLoop = 1;
} }
// Strassenansatz in der Mitte // Strassenansatz in der Mitte
else { else {
tempChance += 54; cout << "zusammenhaengender Straight-Flush-Draw in der Mitte";
for(j2=0; j2<4; j2++) { for(j2=0; j2<4; j2++) {
if(array[j1+j2][2] <= 1) info[3]++; if(array[j1+j2][2] <= 1) temp++;
} }
cout << "zusammenhaengender Straight-Flush-Draw in der Mitte " << info[3] << "\t"; return (70000 + temp*100 + array[j1][1]);
breakLoop = 1;
} }
} }
else { else {
// Bauchschuss ? // Bauchschuss ?
if(array[j1][1]-4 == array[j1+3][1]) { if(array[j1][1]-4 == array[j1+3][1]) {
tempChance += 45; cout << "Straight-Flush-Bauchschuss";
for(j2=0; j2<4; j2++) { for(j2=0; j2<4; j2++) {
if(array[j1+j2][2] <= 1) info[3]++; if(array[j1+j2][2] <= 1) temp++;
} }
cout << "Straight-Flush-Bauchschuss " << info[3] << "\t"; return (71000 + temp*100 + array[j1][1]);
breakLoop = 1;
} }
else { else {
// Test auf Straight-Flush-Ausnahme 5-4-3-2-A // Test auf Straight-Flush-Ausnahme 5-4-3-2-A
if(array[j1][1] == 12 && (array[j1+1][1]<=3 || (array[j1+2][1]<=3 && array[j1][0]==array[j1+4][0]))) { if(array[j1][1] == 12 && (array[j1+1][1]<=3 || (array[j1+2][1]<=3 && array[j1][0]==array[j1+4][0]))) {
tempChance += 45; cout << "Straight-Flush-Draw Ass unten";
for(j2=0; j2<4; j2++) { for(j2=0; j2<4; j2++) {
if(array[j1+j2][2] <= 1) info[3]++; if(array[j1+j2][2] <= 1) temp++;
} }
cout << "Straight-Flush-Draw Ass unten " << info[3] << "\t"; return (71012 + temp*100);
breakLoop = 1;
} }
// Flush Draw // Flush Draw
else { else {
tempChance += 35; cout << "Flush Draw";
for(j2=0; j2<4; j2++) { for(j2=0; j2<4; j2++) {
if(array[j1+j2][2] <= 1) info[3]++; if(array[j1+j2][2] <= 1) {
temp2Array[temp] = array[j1+j2][1];
temp++;
}
}
if(temp==2) {
for(j2=0; j2<4; j2++) {
if(temp2Array[1] > array[j1+j2][1]) temp1++;
if(temp2Array[0] > array[j1+j2][1]) temp2++;
}
return (60000 + temp1*1000 + temp2*100 + array[j1][1]);
} else {
// 2.Stelle
for(j2=0; j2<4; j2++) {
if(j1==0) {
if(array[4][1] < array[j1+j2][1]) temp1++;
} else {
if(array[0][1] < array[j1+j2][1]) temp1++;
}
}
if(temp1 >= 2) temp1 = 1;
if(temp1 == 4) temp1 = 2;
// 3.Stelle
for(j2=0; j2<4; j2++) {
if(temp2Array[0] < array[j1+j2][1]) temp2++;
}
tempValue = (50000 + temp1*1000 + temp2*100 + temp2Array[0]);
breakLoop = 1;
} }
cout << "Flush Draw " << info[3] << "\t";
breakLoop = 1;
} }
} }
} }
@@ -1468,13 +1485,8 @@ int LocalPlayer::flopCardsValue(int* cards, int* info) {
// auf Vierling testen // auf Vierling testen
for(j1=0; j1<2; j1++) { for(j1=0; j1<2; j1++) {
if(array[j1][1] == array[j1+1][1] && array[j1][1] == array[j1+2][1] && array[j1][1] == array[j1+3][1]) { if(array[j1][1] == array[j1+1][1] && array[j1][1] == array[j1+2][1] && array[j1][1] == array[j1+3][1]) {
info[0] = 7; cout << "Vierling ";
info[1] = array[j1][1]; return 80000;
for(j2=0; j2<4; j2++) {
if(array[j1+j2][2] <= 1) info[3]++;
}
cout << "Vierling " << info[3] << endl;
return 0;
} }
} }
@@ -1482,141 +1494,136 @@ int LocalPlayer::flopCardsValue(int* cards, int* info) {
// auf Straight und Full House testen // auf Straight und Full House testen
// Straight // Straight
if((array[0][1]-1 == array[1][1] || array[0][1]-9 == array[1][1] ) && array[1][1]-1 == array[2][1] && array[2][1]-1 == array[3][1] && array[3][1]-1 == array[4][1]) { if((array[0][1]-1 == array[1][1] || array[0][1]-9 == array[1][1] ) && array[1][1]-1 == array[2][1] && array[2][1]-1 == array[3][1] && array[3][1]-1 == array[4][1]) {
info[0] = 4; cout << "Straight";
if(array[0][1]-1 == array[1][1]) { return 80000;
info[1] = array[0][1];
} else {
info[1] = array[1][1];
}
info[3] = 2;
cout << "Straight " << info[3] << endl;
return 0;
} }
// Full House // Full House
if((array[0][1] == array[1][1] && array[0][1] == array[2][1] && array[3][1] == array[4][1]) || (array[2][1] == array[3][1] && array[2][1] == array[4][1] && array[0][1] == array[1][1])) { if((array[0][1] == array[1][1] && array[0][1] == array[2][1] && array[3][1] == array[4][1]) || (array[2][1] == array[3][1] && array[2][1] == array[4][1] && array[0][1] == array[1][1])) {
info[0] = 6; cout << "Full House";
info[3] = 2; return 80000;
cout << "Full House " << info[3] << endl;
return 0;
} }
// auf Straßenansatz testen // // auf Straßenansatz testen
for(j1=0; j1<5 && !breakLoop; j1++) { // for(j1=0; j1<5 && !breakLoop; j1++) {
for(j2=j1+1; j2<5 && !breakLoop; j2++) { // for(j2=j1+1; j2<5 && !breakLoop; j2++) {
for(j3=j2+1; j3<5 && !breakLoop; j3++) { // for(j3=j2+1; j3<5 && !breakLoop; j3++) {
for(j4=j3+1; j4<5 && !breakLoop; j4++) { // for(j4=j3+1; j4<5 && !breakLoop; j4++) {
// zusammenhaengender Strassenansatz ? // // zusammenhaengender Strassenansatz ?
if((array[j1][1]-1 == array[j2][1] || array[j1][1]-9 == array[j2][1]) && array[j2][1]-1 == array[j3][1] && array[j3][1]-1 == array[j4][1]) { // if((array[j1][1]-1 == array[j2][1] || array[j1][1]-9 == array[j2][1]) && array[j2][1]-1 == array[j3][1] && array[j3][1]-1 == array[j4][1]) {
// Strassenansatz am Rand? // // Strassenansatz am Rand?
if(array[j1][1] == 12) { // if(array[j1][1] == 12) {
tempChance += 16; // cout << "zusammenhaengender Straight-Draw mit Ass high";
if(array[j1][2] <= 1) info[3]++; //
if(array[j2][2] <= 1) info[3]++; // tempChance =
if(array[j3][2] <= 1) info[3]++; // breakLoop = 1;
if(array[j4][2] <= 1) info[3]++; //
cout << "zusammenhaengender Straight-Draw mit Ass high " << info[3] << "\t"; // for(j2=0; j2<4; j2++) {
breakLoop = 1; // if(array[j1+j2][2] <= 1) temp++;
} // }
// Strassenansatz in der Mitte //
else { // }
tempChance += 31; // // Strassenansatz in der Mitte
if(array[j1][2] <= 1) info[3]++; // else {
if(array[j2][2] <= 1) info[3]++; // tempChance += 31;
if(array[j3][2] <= 1) info[3]++; // if(array[j1][2] <= 1) info[3]++;
if(array[j4][2] <= 1) info[3]++; // if(array[j2][2] <= 1) info[3]++;
cout << "zusammenhaengender Straight-Draw in der Mitte " << info[3] << "\t"; // if(array[j3][2] <= 1) info[3]++;
breakLoop = 1; // if(array[j4][2] <= 1) info[3]++;
} // cout << "zusammenhaengender Straight-Draw in der Mitte " << info[3] << "\t";
} // breakLoop = 1;
else { // }
// Bauchschuss ? // }
if((array[j1][1]-2 == array[j2][1] && array[j2][1]-1 == array[j3][1] && array[j3][1]-1 == array[j4][1]) || (array[j1][1]-1 == array[j2][1] && array[j2][1]-2 == array[j3][1] && array[j3][1]-1 == array[j4][1]) || (array[j1][1]-1 == array[j2][1] && array[j2][1]-1 == array[j3][1] && array[j3][1]-2 == array[j4][1])) { // else {
tempChance += 16; // // Bauchschuss ?
if(array[j1][2] <= 1) info[3]++; // if((array[j1][1]-2 == array[j2][1] && array[j2][1]-1 == array[j3][1] && array[j3][1]-1 == array[j4][1]) || (array[j1][1]-1 == array[j2][1] && array[j2][1]-2 == array[j3][1] && array[j3][1]-1 == array[j4][1]) || (array[j1][1]-1 == array[j2][1] && array[j2][1]-1 == array[j3][1] && array[j3][1]-2 == array[j4][1])) {
if(array[j2][2] <= 1) info[3]++; // tempChance += 16;
if(array[j3][2] <= 1) info[3]++; // if(array[j1][2] <= 1) info[3]++;
if(array[j4][2] <= 1) info[3]++; // if(array[j2][2] <= 1) info[3]++;
cout << "Straight-Draw Bauchschuss " << info[3] << "\t"; // if(array[j3][2] <= 1) info[3]++;
breakLoop = 1; // if(array[j4][2] <= 1) info[3]++;
} // cout << "Straight-Draw Bauchschuss " << info[3] << "\t";
else { // breakLoop = 1;
// Test auf Straßenansatz-Ausnahme 5-4-3-2-A // }
if((array[j1][1]-9 == array[j2][1] && array[j2][1]-1 == array[j3][1] && array[j3][1]-1 == array[j4][1]) || (array[j1][1]-9 == array[j2][1] && array[j2][1]-1 == array[j3][1] && array[j3][1]-2 == array[j4][1]) || (array[j1][1]-9 == array[j2][1] && array[j2][1]-2 == array[j3][1] && array[j3][1]-1 == array[j4][1]) || (array[j1][1]-10 == array[j2][1] && array[j2][1]-1 == array[j3][1] && array[j3][1]-1 == array[j4][1])) { // else {
tempChance += 16; // // Test auf Straßenansatz-Ausnahme 5-4-3-2-A
if(array[j1][2] <= 1) info[3]++; // if((array[j1][1]-9 == array[j2][1] && array[j2][1]-1 == array[j3][1] && array[j3][1]-1 == array[j4][1]) || (array[j1][1]-9 == array[j2][1] && array[j2][1]-1 == array[j3][1] && array[j3][1]-2 == array[j4][1]) || (array[j1][1]-9 == array[j2][1] && array[j2][1]-2 == array[j3][1] && array[j3][1]-1 == array[j4][1]) || (array[j1][1]-10 == array[j2][1] && array[j2][1]-1 == array[j3][1] && array[j3][1]-1 == array[j4][1])) {
if(array[j2][2] <= 1) info[3]++; // tempChance += 16;
if(array[j3][2] <= 1) info[3]++; // if(array[j1][2] <= 1) info[3]++;
if(array[j4][2] <= 1) info[3]++; // if(array[j2][2] <= 1) info[3]++;
cout << "Straight-Draw Ass unten " << info[3] << "\t"; // if(array[j3][2] <= 1) info[3]++;
breakLoop = 1; // if(array[j4][2] <= 1) info[3]++;
} // cout << "Straight-Draw Ass unten " << info[3] << "\t";
} // breakLoop = 1;
} // }
} // }
} // }
} // }
} // }
// }
// }
// auf Drilling testen //
for(j1=0; j1<3; j1++) { //
if(array[j1][1] == array[j1+1][1] && array[j1][1] == array[j1+2][1]) { // // auf Drilling testen
info[0] = 3; // for(j1=0; j1<3; j1++) {
if(j1==0) info[1] = array[3][1]; // if(array[j1][1] == array[j1+1][1] && array[j1][1] == array[j1+2][1]) {
else info[1] = array[0][1]; // info[0] = 3;
for(j2=0; j2<3; j2++) { // if(j1==0) info[1] = array[3][1];
if(array[j1+j2][2] <= 1) info[3]++; // else info[1] = array[0][1];
} // for(j2=0; j2<3; j2++) {
cout << "Drilling " << info[3] << endl; // if(array[j1+j2][2] <= 1) info[3]++;
return 0; // }
} // cout << "Drilling " << info[3] << endl;
} // return 0;
// }
// auf Zwei Paare testen // }
for(j1=0; j1<2; j1++) { //
for(j2=j1+2; j2<4; j2++) { // // auf Zwei Paare testen
if(array[j1][1] == array[j1+1][1] && array[j2][1] == array[j2+1][1]) { // for(j1=0; j1<2; j1++) {
info[0] = 2; // for(j2=j1+2; j2<4; j2++) {
info[1] = array[j1][1]; // if(array[j1][1] == array[j1+1][1] && array[j2][1] == array[j2+1][1]) {
for(j3=0; j3<2; j3++) { // info[0] = 2;
if(array[j1+j3][2] <= 1) info[3]++; // info[1] = array[j1][1];
if(array[j2+j3][2] <= 1) info[3]++; // for(j3=0; j3<2; j3++) {
} // if(array[j1+j3][2] <= 1) info[3]++;
cout << "Zwei Paare " << info[3] << endl; // if(array[j2+j3][2] <= 1) info[3]++;
return 0; // }
} // cout << "Zwei Paare " << info[3] << endl;
} // return 0;
} // }
// }
// auf Paar testen // }
for(j1=0; j1<4; j1++) { //
if(array[j1][1] == array[j1+1][1]) { // // auf Paar testen
info[0] = 1; // for(j1=0; j1<4; j1++) {
info[1] = 0; // if(array[j1][1] == array[j1+1][1]) {
for(j2=0; j2<5; j2++) { // info[0] = 1;
if(array[j2][2] >= 2 && array[j2][1] > array[j1][1]) info[1]++; // info[1] = 0;
} // for(j2=0; j2<5; j2++) {
for(j2=0; j2<2; j2++) { // if(array[j2][2] >= 2 && array[j2][1] > array[j1][1]) info[1]++;
if(array[j1+j2][2] <= 1) info[3]++; // }
} // for(j2=0; j2<2; j2++) {
cout << "Paar " << info[1] << "\t" << info[3] << endl; // if(array[j1+j2][2] <= 1) info[3]++;
return 0; // }
} // cout << "Paar " << info[1] << "\t" << info[3] << endl;
} // return 0;
// }
// Highest Card (Klasse 0) + Kicker // }
info[0] = 0; //
info[1] = array[0][1]; // // Highest Card (Klasse 0) + Kicker
info[2] = tempChance; // info[0] = 0;
if(!breakLoop) { // info[1] = array[0][1];
if(array[0][2] <= 1) info[3] = 1; // info[2] = tempChance;
else info[3] = 0; // if(!breakLoop) {
cout << "Highest Card " << info[3]; // if(array[0][2] <= 1) info[3] = 1;
} // else info[3] = 0;
cout << endl; // cout << "Highest Card " << info[3];
// }
// cout << endl;
return 0; return 0;
} }
+1 -1
View File
@@ -94,7 +94,7 @@ public:
void turnEngine(); void turnEngine();
void riverEngine(); void riverEngine();
int flopCardsValue(int*, int*); int flopCardsValue(int*);
int turnCardsValue(int*); int turnCardsValue(int*);