|
|
|
@@ -23,7 +23,7 @@
|
|
|
|
|
|
|
|
|
|
using namespace std;
|
|
|
|
|
|
|
|
|
|
LocalPlayer::LocalPlayer(BoardInterface *b, int id, std::string name, std::string avatar, int sC, bool aS, int mB) : PlayerInterface(), actualHand(0), actualBoard(b), myCardsValue(0), myID(id), myName(name), myAvatar(avatar), myDude(0), myDude4(0), myCardsValueInt(0), myOdds(-1.0), myCash(sC), mySet(0), myAction(0), myButton(mB), myActiveStatus(aS), myTurn(0), myRoundStartCash(0)
|
|
|
|
|
LocalPlayer::LocalPlayer(BoardInterface *b, int id, std::string name, std::string avatar, int sC, bool aS, int mB) : PlayerInterface(), actualHand(0), actualBoard(b), myCardsValue(0), myID(id), myName(name), myAvatar(avatar), myDude(0), myDude4(0), myCardsValueInt(0), myOdds(-1.0), myCash(sC), mySet(0), myAction(0), myButton(mB), myActiveStatus(aS), myTurn(0), myRoundStartCash(0), sBluff(0)
|
|
|
|
|
{
|
|
|
|
|
// myBestHandPosition mit -1 initialisieren
|
|
|
|
|
int i;
|
|
|
|
@@ -133,6 +133,8 @@ void LocalPlayer::preflopEngine() {
|
|
|
|
|
|
|
|
|
|
int bet = 0;
|
|
|
|
|
int raise = 0;
|
|
|
|
|
int cBluff;
|
|
|
|
|
Tools myTool;
|
|
|
|
|
|
|
|
|
|
// temporär solange preflopValue und flopValue noch nicht bereinigt für sechs und sieben spieler
|
|
|
|
|
int players = actualHand->getActualQuantityPlayers();
|
|
|
|
@@ -143,7 +145,7 @@ void LocalPlayer::preflopEngine() {
|
|
|
|
|
|
|
|
|
|
// Niveaus setzen + Dude + Anzahl Gegenspieler
|
|
|
|
|
// 1. Fold -- Call
|
|
|
|
|
myNiveau[0] = 40 + myDude4 - 6*(players - 2);
|
|
|
|
|
myNiveau[0] = 42 + myDude4 - 6*(players - 2);
|
|
|
|
|
// 3. Call -- Raise
|
|
|
|
|
myNiveau[2] = 53 + myDude4 - 6*(players - 2);
|
|
|
|
|
|
|
|
|
@@ -166,24 +168,18 @@ void LocalPlayer::preflopEngine() {
|
|
|
|
|
// cout << myID << ": " << myHoleCardsValue << " - " << myNiveau[0] << " " << myNiveau[2] << " - " << myCards[0] << " " << myCards[1] << endl;
|
|
|
|
|
|
|
|
|
|
// Aggresivität des humanPlayers auslesen
|
|
|
|
|
int aggValue = (int)(((actualHand->getPlayerArray()[0]->getMyAggressive()*0.1)/7.0 - 1.0/actualHand->getActualQuantityPlayers())*7.0);
|
|
|
|
|
int aggValue = (int)(((actualHand->getPlayerArray()[0]->getMyAggressive()*1.0)/7.0 - 1.0/actualHand->getActualQuantityPlayers())*14.0);
|
|
|
|
|
|
|
|
|
|
// if(aggValue > 0) {
|
|
|
|
|
// myNiveau[0] -= aggValue;
|
|
|
|
|
// myNiveau[2] -= aggValue;
|
|
|
|
|
// }
|
|
|
|
|
// cout << aggValue << " ";
|
|
|
|
|
|
|
|
|
|
myNiveau[0] -= aggValue;
|
|
|
|
|
myNiveau[2] -= aggValue;
|
|
|
|
|
|
|
|
|
|
// int aggValue = ( (50*(actualHand->getPlayerArray()[0]->getMyAverageSets()-6*actualHand->getSmallBlind())) / (actualHand->getStartQuantityPlayers()*actualHand->getStartCash() - 6*actualHand->getSmallBlind()) );
|
|
|
|
|
|
|
|
|
|
// if(aggValue > 0) {
|
|
|
|
|
// myNiveau[0] -= aggValue;
|
|
|
|
|
// myNiveau[2] -= aggValue;
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
// cout << "Spieler " << myID << ": Dude " << myDude4 << "\t Wert " << myHoleCardsValue << "\t Niveau " << myNiveau[0] << " " << myNiveau[1] << " " << myNiveau[2] << "\t Agg " << aggValue << " " << endl;
|
|
|
|
|
|
|
|
|
|
// cout << "Spieler " << myID << ": Dude " << myDude4 << "\t Wert " << myHoleCardsValue << "\t Niveau " << myNiveau[0] << " " << myNiveau[1] << " " << myNiveau[2] << "\t Agg " << aggValue << " " << endl;
|
|
|
|
|
|
|
|
|
|
// Check-Bluff generieren
|
|
|
|
|
myTool.getRandNumber(1,100,1,&cBluff,0);
|
|
|
|
|
|
|
|
|
|
// aktive oder passivie Situation ? -> im preflop nur passiv
|
|
|
|
|
|
|
|
|
@@ -201,7 +197,7 @@ void LocalPlayer::preflopEngine() {
|
|
|
|
|
else {
|
|
|
|
|
myAction = 3;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Standard-Raise-Routine
|
|
|
|
|
} else {
|
|
|
|
|
// raise-Betrag ermitteln
|
|
|
|
@@ -216,6 +212,13 @@ void LocalPlayer::preflopEngine() {
|
|
|
|
|
}
|
|
|
|
|
myAction = 5;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// auf cBluff testen --> call statt raise
|
|
|
|
|
if(cBluff > 80) myAction = 3;
|
|
|
|
|
if(cBluff > 70 && myOdds >= myNiveau[2] + 4) myAction = 3;
|
|
|
|
|
if(cBluff > 60 && myOdds >= myNiveau[2] + 8) myAction = 3;
|
|
|
|
|
if(cBluff > 50 && myOdds >= myNiveau[2] + 12) myAction = 3;
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
|
// call
|
|
|
|
@@ -232,6 +235,36 @@ void LocalPlayer::preflopEngine() {
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
cout << sBluff << endl;
|
|
|
|
|
|
|
|
|
|
// auf sBluff testen --> raise statt call oder fold
|
|
|
|
|
if(sBluff < 100/(((actualHand->getActualQuantityPlayers()-2)*6)+3) && myOdds < myNiveau[2] && actualHand->getPreflop()->getHighestSet() == 2*actualHand->getSmallBlind()) {
|
|
|
|
|
|
|
|
|
|
cout << "sBLUFF!" << endl;
|
|
|
|
|
|
|
|
|
|
// Gegner raisen ebenfalls -> call
|
|
|
|
|
if(actualHand->getPreflop()->getHighestSet() >= 12*actualHand->getSmallBlind()) {
|
|
|
|
|
myAction = 3;
|
|
|
|
|
}
|
|
|
|
|
// Standard-Raise-Routine
|
|
|
|
|
else {
|
|
|
|
|
// raise-Betrag ermitteln
|
|
|
|
|
raise = (sBluff/(8-actualHand->getActualQuantityPlayers()))*actualHand->getSmallBlind();
|
|
|
|
|
// raise-Betrag zu klein -> mindestens Standard-raise
|
|
|
|
|
if(raise < actualHand->getPreflop()->getHighestSet()) {
|
|
|
|
|
raise = actualHand->getPreflop()->getHighestSet();
|
|
|
|
|
}
|
|
|
|
|
// all in bei nur wenigen Chips oder knappem raise
|
|
|
|
|
if(myCash/(2*actualHand->getSmallBlind()) <= 6 || raise >= (myCash*4)/5) {
|
|
|
|
|
raise = myCash;
|
|
|
|
|
}
|
|
|
|
|
myAction = 5;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
evaluation(bet, raise);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@@ -240,6 +273,9 @@ void LocalPlayer::flopEngine() {
|
|
|
|
|
|
|
|
|
|
int raise = 0;
|
|
|
|
|
int bet = 0;
|
|
|
|
|
int i;
|
|
|
|
|
int cBluff;
|
|
|
|
|
Tools myTool;
|
|
|
|
|
|
|
|
|
|
// übergang solange preflopValue und flopValue noch nicht bereinigt
|
|
|
|
|
int players = actualHand->getActualQuantityPlayers();
|
|
|
|
@@ -249,24 +285,26 @@ void LocalPlayer::flopEngine() {
|
|
|
|
|
|
|
|
|
|
// Niveaus setzen + Dude + Anzahl Gegenspieler
|
|
|
|
|
// 1. Fold -- Call
|
|
|
|
|
myNiveau[0] = 40 + myDude4 - 6*(players - 2);
|
|
|
|
|
myNiveau[0] = 42 + myDude4 - 6*(players - 2);
|
|
|
|
|
// 2. Check -- Bet
|
|
|
|
|
myNiveau[1] = 52 + myDude4 - 6*(players - 2);
|
|
|
|
|
myNiveau[1] = 54 + myDude4 - 6*(players - 2);
|
|
|
|
|
// 3. Call -- Raise
|
|
|
|
|
myNiveau[2] = 64 + myDude4 - 6*(players - 2);
|
|
|
|
|
|
|
|
|
|
// auf Aggresivität des humanPlayers eingehen
|
|
|
|
|
// int aggValue = ( (50*(actualHand->getPlayerArray()[0]->getMyAverageSets()-6*actualHand->getSmallBlind())) / (actualHand->getStartQuantityPlayers()*actualHand->getStartCash() - 6*actualHand->getSmallBlind()) );
|
|
|
|
|
|
|
|
|
|
// if(aggValue > 0) {
|
|
|
|
|
// myNiveau[0] -= aggValue;
|
|
|
|
|
// myNiveau[2] -= aggValue;
|
|
|
|
|
// }
|
|
|
|
|
myNiveau[2] = 66 + myDude4 - 6*(players - 2);
|
|
|
|
|
|
|
|
|
|
// eigenes mögliches highestSet
|
|
|
|
|
int individualHighestSet = actualHand->getFlop()->getHighestSet();
|
|
|
|
|
if(individualHighestSet > myCash) individualHighestSet = myCash;
|
|
|
|
|
|
|
|
|
|
// Aggresivität des humanPlayers auslesen
|
|
|
|
|
int aggValue = (int)(((actualHand->getPlayerArray()[0]->getMyAggressive()*1.0)/7.0 - 1.0/actualHand->getActualQuantityPlayers())*14.0);
|
|
|
|
|
|
|
|
|
|
for(i=0; i<3; i++) {
|
|
|
|
|
myNiveau[i] -= aggValue;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Check-Bluff generieren
|
|
|
|
|
myTool.getRandNumber(1,100,1,&cBluff,0);
|
|
|
|
|
|
|
|
|
|
// aktiv oder passiv?
|
|
|
|
|
if(actualHand->getFlop()->getHighestSet() > 0) {
|
|
|
|
|
|
|
|
|
@@ -311,6 +349,13 @@ void LocalPlayer::flopEngine() {
|
|
|
|
|
}
|
|
|
|
|
myAction = 5;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// auf cBluff testen --> call statt raise
|
|
|
|
|
if(cBluff > 90) myAction = 3;
|
|
|
|
|
if(cBluff > 80 && myOdds >= myNiveau[2] + 4) myAction = 3;
|
|
|
|
|
if(cBluff > 70 && myOdds >= myNiveau[2] + 8) myAction = 3;
|
|
|
|
|
if(cBluff > 60 && myOdds >= myNiveau[2] + 12) myAction = 3;
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
|
// call -> über niveau0, schon einiges gesetzt im flop, schon einiges insgesamt gesetzt
|
|
|
|
@@ -329,12 +374,8 @@ void LocalPlayer::flopEngine() {
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
|
// check
|
|
|
|
|
if(myOdds < myNiveau[1]) {
|
|
|
|
|
myAction = 2;
|
|
|
|
|
}
|
|
|
|
|
// bet
|
|
|
|
|
else {
|
|
|
|
|
if(myOdds >= myNiveau[1]) {
|
|
|
|
|
bet = (((int)myOdds-myNiveau[1])/8)*2*actualHand->getSmallBlind();
|
|
|
|
|
// bet zu klein
|
|
|
|
|
if(bet == 0) {
|
|
|
|
@@ -342,13 +383,23 @@ void LocalPlayer::flopEngine() {
|
|
|
|
|
}
|
|
|
|
|
// all in bei nur wenigen Chips
|
|
|
|
|
if(myCash/(2*actualHand->getSmallBlind()) <= 6) {
|
|
|
|
|
raise = myCash;
|
|
|
|
|
bet = myCash;
|
|
|
|
|
}
|
|
|
|
|
// all in bei knappem bet
|
|
|
|
|
if(bet > (myCash*4.0)/5.0) {
|
|
|
|
|
bet = myCash;
|
|
|
|
|
}
|
|
|
|
|
myAction = 4;
|
|
|
|
|
|
|
|
|
|
// auf cBluff testen --> check statt bet
|
|
|
|
|
if(cBluff > 80) myAction = 2;
|
|
|
|
|
if(cBluff > 70 && myOdds >= myNiveau[1] + 4) myAction = 2;
|
|
|
|
|
if(cBluff > 60 && myOdds >= myNiveau[1] + 8) myAction = 2;
|
|
|
|
|
if(cBluff > 50 && myOdds >= myNiveau[1] + 12) myAction = 2;
|
|
|
|
|
}
|
|
|
|
|
// bet
|
|
|
|
|
else {
|
|
|
|
|
myAction = 2;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
@@ -626,32 +677,37 @@ void LocalPlayer::turnEngine() {
|
|
|
|
|
|
|
|
|
|
int raise = 0;
|
|
|
|
|
int bet = 0;
|
|
|
|
|
int i;
|
|
|
|
|
int cBluff;
|
|
|
|
|
Tools myTool;
|
|
|
|
|
|
|
|
|
|
readFile();
|
|
|
|
|
|
|
|
|
|
// Niveaus setzen + Dude + Anzahl Gegenspieler
|
|
|
|
|
// 1. Fold -- Call
|
|
|
|
|
myNiveau[0] = 42 + myDude4/* - 6*(actualHand->getActualQuantityPlayers() - 2)*/;
|
|
|
|
|
myNiveau[0] = 44 + myDude4/* - 6*(actualHand->getActualQuantityPlayers() - 2)*/;
|
|
|
|
|
// 2. Check -- Bet
|
|
|
|
|
myNiveau[1] = 53 + myDude4/* - 6*(actualHand->getActualQuantityPlayers() - 2)*/;
|
|
|
|
|
myNiveau[1] = 55 + myDude4/* - 6*(actualHand->getActualQuantityPlayers() - 2)*/;
|
|
|
|
|
// 3. Call -- Raise
|
|
|
|
|
myNiveau[2] = 64 + myDude4/* - 6*(actualHand->getActualQuantityPlayers() - 2)*/;
|
|
|
|
|
myNiveau[2] = 66 + myDude4/* - 6*(actualHand->getActualQuantityPlayers() - 2)*/;
|
|
|
|
|
|
|
|
|
|
// auf Aggresivität des humanPlayers eingehen
|
|
|
|
|
// int aggValue = ( (50*(actualHand->getPlayerArray()[0]->getMyAverageSets()-6*actualHand->getSmallBlind())) / (actualHand->getStartQuantityPlayers()*actualHand->getStartCash() - 6*actualHand->getSmallBlind()) );
|
|
|
|
|
// Aggresivität des humanPlayers auslesen
|
|
|
|
|
int aggValue = (int)(((actualHand->getPlayerArray()[0]->getMyAggressive()*1.0)/7.0 - 1.0/actualHand->getActualQuantityPlayers())*14.0);
|
|
|
|
|
|
|
|
|
|
// if(aggValue > 0) {
|
|
|
|
|
// myNiveau[0] -= aggValue;
|
|
|
|
|
// myNiveau[2] -= aggValue;
|
|
|
|
|
// }
|
|
|
|
|
for(i=0; i<3; i++) {
|
|
|
|
|
myNiveau[i] -= aggValue;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// cout << "Spieler " << myID << ": Dude " << myDude4 << "\t Wert " << myHoleCardsValue << "\t Niveau " << myNiveau[0] << " " << myNiveau[1] << " " << myNiveau[2] << "\t Agg " << aggValue << " " << endl;
|
|
|
|
|
// cout << "Spieler " << myID << ": Dude " << myDude4 << "\t Wert " << myHoleCardsValue << "\t Niveau " << myNiveau[0] << " " << myNiveau[1] << " " << myNiveau[2] << "\t Agg " << aggValue << " " << endl;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// eigenes mögliches highestSet
|
|
|
|
|
int individualHighestSet = actualHand->getTurn()->getHighestSet();
|
|
|
|
|
if(individualHighestSet > myCash) individualHighestSet = myCash;
|
|
|
|
|
|
|
|
|
|
// Check-Bluff generieren
|
|
|
|
|
myTool.getRandNumber(1,100,1,&cBluff,0);
|
|
|
|
|
|
|
|
|
|
// aktiv oder passiv?
|
|
|
|
|
if(actualHand->getTurn()->getHighestSet() > 0) {
|
|
|
|
|
|
|
|
|
@@ -696,6 +752,11 @@ void LocalPlayer::turnEngine() {
|
|
|
|
|
}
|
|
|
|
|
myAction = 5;
|
|
|
|
|
}
|
|
|
|
|
// auf cBluff testen --> call statt raise
|
|
|
|
|
if(cBluff > 90) myAction = 3;
|
|
|
|
|
if(cBluff > 80 && myOdds >= myNiveau[2] + 5) myAction = 3;
|
|
|
|
|
if(cBluff > 70 && myOdds >= myNiveau[2] + 10) myAction = 3;
|
|
|
|
|
if(cBluff > 60 && myOdds >= myNiveau[2] + 15) myAction = 3;
|
|
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
|
// call -> über niveau0, schon einiges gesetzt im flop, schon einiges insgesamt gesetzt
|
|
|
|
@@ -714,6 +775,147 @@ void LocalPlayer::turnEngine() {
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
// aktiv
|
|
|
|
|
else {
|
|
|
|
|
// bet
|
|
|
|
|
if(myOdds >= myNiveau[1]) {
|
|
|
|
|
bet = (((int)myOdds-myNiveau[1])/6)*2*actualHand->getSmallBlind();
|
|
|
|
|
if(bet == 0) {
|
|
|
|
|
bet = 2*actualHand->getSmallBlind();
|
|
|
|
|
}
|
|
|
|
|
// all in bei nur wenigen Chips
|
|
|
|
|
if(myCash/(2*actualHand->getSmallBlind()) <= 6) {
|
|
|
|
|
bet = myCash;
|
|
|
|
|
}
|
|
|
|
|
// all in bei knappem bet
|
|
|
|
|
if(bet > (myCash*4.0)/5.0) {
|
|
|
|
|
bet = myCash;
|
|
|
|
|
}
|
|
|
|
|
myAction = 4;
|
|
|
|
|
|
|
|
|
|
// auf cBluff testen --> call statt raise
|
|
|
|
|
if(cBluff > 90) myAction = 2;
|
|
|
|
|
if(cBluff > 80 && myOdds >= myNiveau[2] + 5) myAction = 2;
|
|
|
|
|
if(cBluff > 70 && myOdds >= myNiveau[2] + 10) myAction = 2;
|
|
|
|
|
if(cBluff > 60 && myOdds >= myNiveau[2] + 15) myAction = 2;
|
|
|
|
|
}
|
|
|
|
|
// check
|
|
|
|
|
else {
|
|
|
|
|
myAction = 2;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
evaluation(bet, raise);
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void LocalPlayer::riverEngine() {
|
|
|
|
|
|
|
|
|
|
ConfigFile myConfig;
|
|
|
|
|
|
|
|
|
|
// int tempArray[6];
|
|
|
|
|
// int boardCards[5];
|
|
|
|
|
// int i;
|
|
|
|
|
|
|
|
|
|
// for(i=0; i<2; i++) tempArray[i] = myCards[i];
|
|
|
|
|
// actualBoard->getMyCards(boardCards);
|
|
|
|
|
// for(i=0; i<4; i++) tempArray[2+i] = boardCards[i];
|
|
|
|
|
|
|
|
|
|
// for(i=0; i<5; i++) cout << tempArray[i] << " ";
|
|
|
|
|
// cout << endl;
|
|
|
|
|
|
|
|
|
|
// cout << myID << ": ";
|
|
|
|
|
|
|
|
|
|
// turnCardsValue(tempArray);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
int raise = 0;
|
|
|
|
|
int bet = 0;
|
|
|
|
|
int i;
|
|
|
|
|
|
|
|
|
|
readFile();
|
|
|
|
|
|
|
|
|
|
// Niveaus setzen + Dude + Anzahl Gegenspieler
|
|
|
|
|
// 1. Fold -- Call
|
|
|
|
|
myNiveau[0] = 44 + myDude4/* - 6*(actualHand->getActualQuantityPlayers() - 2)*/;
|
|
|
|
|
// 2. Check -- Bet
|
|
|
|
|
myNiveau[1] = 55 + myDude4/* - 6*(actualHand->getActualQuantityPlayers() - 2)*/;
|
|
|
|
|
// 3. Call -- Raise
|
|
|
|
|
myNiveau[2] = 66 + myDude4/* - 6*(actualHand->getActualQuantityPlayers() - 2)*/;
|
|
|
|
|
|
|
|
|
|
// Aggresivität des humanPlayers auslesen
|
|
|
|
|
int aggValue = (int)(((actualHand->getPlayerArray()[0]->getMyAggressive()*1.0)/7.0 - 1.0/actualHand->getActualQuantityPlayers())*14.0);
|
|
|
|
|
|
|
|
|
|
for(i=0; i<3; i++) {
|
|
|
|
|
myNiveau[i] -= aggValue;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// cout << "Spieler " << myID << ": Dude " << myDude4 << "\t Wert " << myHoleCardsValue << "\t Niveau " << myNiveau[0] << " " << myNiveau[1] << " " << myNiveau[2] << "\t Agg " << aggValue << " " << endl;
|
|
|
|
|
|
|
|
|
|
// eigenes mögliches highestSet
|
|
|
|
|
int individualHighestSet = actualHand->getRiver()->getHighestSet();
|
|
|
|
|
if(individualHighestSet > myCash) individualHighestSet = myCash;
|
|
|
|
|
|
|
|
|
|
// aktiv oder passiv?
|
|
|
|
|
if(actualHand->getRiver()->getHighestSet() > 0) {
|
|
|
|
|
|
|
|
|
|
// Verhaeltnis Set / Cash
|
|
|
|
|
if(myCash/individualHighestSet >= 25) {
|
|
|
|
|
myNiveau[0] += (25-myCash/individualHighestSet)/10;
|
|
|
|
|
} else {
|
|
|
|
|
myNiveau[0] += (25-myCash/individualHighestSet)/3;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Verhaeltnis Set / Cash für raise
|
|
|
|
|
if(myCash/individualHighestSet < 10) {
|
|
|
|
|
myNiveau[2] += (10-myCash/individualHighestSet)/2;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// raise (bei hohem Niveau)
|
|
|
|
|
if(myOdds >= myNiveau[2]) {
|
|
|
|
|
// raise-loop unterbinden -> d.h. entweder call oder bei superblatt all in
|
|
|
|
|
if(actualHand->getRiver()->getHighestSet() >= 12*actualHand->getSmallBlind()) {
|
|
|
|
|
// all in
|
|
|
|
|
if(myOdds >= myNiveau[2] + 8) {
|
|
|
|
|
raise = myCash;
|
|
|
|
|
myAction = 5;
|
|
|
|
|
}
|
|
|
|
|
// nur call
|
|
|
|
|
else {
|
|
|
|
|
myAction = 3;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
// Standard-Raise-Routine
|
|
|
|
|
else {
|
|
|
|
|
// raise-Betrag ermitteln
|
|
|
|
|
raise = (((int)myOdds-myNiveau[2])/2)*2*actualHand->getSmallBlind();
|
|
|
|
|
// raise-Betrag zu klein -> mindestens Standard-raise
|
|
|
|
|
if(raise == 0) {
|
|
|
|
|
raise = actualHand->getRiver()->getHighestSet();
|
|
|
|
|
}
|
|
|
|
|
// all in bei nur wenigen Chips
|
|
|
|
|
if(myCash/(2*actualHand->getSmallBlind()) <= 8) {
|
|
|
|
|
raise = myCash;
|
|
|
|
|
}
|
|
|
|
|
myAction = 5;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
|
// call -> über niveau0, schon einiges gesetzt im flop, schon einiges insgesamt gesetzt
|
|
|
|
|
if(myOdds >= myNiveau[0] || (mySet >= actualHand->getRiver()->getHighestSet()/2 && myOdds >= myNiveau[0]-5) || (myRoundStartCash-myCash > individualHighestSet && myNiveau[0]-3)) {
|
|
|
|
|
// all in bei knappem call
|
|
|
|
|
if(myCash-actualHand->getRiver()->getHighestSet() <= (myCash*1)/4) {
|
|
|
|
|
raise = myCash;
|
|
|
|
|
myAction = 5;
|
|
|
|
|
}
|
|
|
|
|
else myAction = 3;
|
|
|
|
|
}
|
|
|
|
|
// fold
|
|
|
|
|
else {
|
|
|
|
|
myAction = 1;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
|
// check
|
|
|
|
|
if(myOdds < myNiveau[1]) {
|
|
|
|
@@ -721,7 +923,7 @@ void LocalPlayer::turnEngine() {
|
|
|
|
|
}
|
|
|
|
|
// bet
|
|
|
|
|
else {
|
|
|
|
|
bet = (((int)myOdds-myNiveau[1])/6)*2*actualHand->getSmallBlind();
|
|
|
|
|
bet = (((int)myOdds-myNiveau[1])/3)*2*actualHand->getSmallBlind();
|
|
|
|
|
if(bet == 0) {
|
|
|
|
|
bet = 2*actualHand->getSmallBlind();
|
|
|
|
|
}
|
|
|
|
@@ -735,147 +937,11 @@ void LocalPlayer::turnEngine() {
|
|
|
|
|
}
|
|
|
|
|
myAction = 4;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
evaluation(bet, raise);
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void LocalPlayer::riverEngine() {
|
|
|
|
|
|
|
|
|
|
ConfigFile myConfig;
|
|
|
|
|
|
|
|
|
|
// int tempArray[6];
|
|
|
|
|
// int boardCards[5];
|
|
|
|
|
// int i;
|
|
|
|
|
|
|
|
|
|
// for(i=0; i<2; i++) tempArray[i] = myCards[i];
|
|
|
|
|
// actualBoard->getMyCards(boardCards);
|
|
|
|
|
// for(i=0; i<4; i++) tempArray[2+i] = boardCards[i];
|
|
|
|
|
|
|
|
|
|
// for(i=0; i<5; i++) cout << tempArray[i] << " ";
|
|
|
|
|
// cout << endl;
|
|
|
|
|
|
|
|
|
|
// cout << myID << ": ";
|
|
|
|
|
|
|
|
|
|
// turnCardsValue(tempArray);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
int raise = 0;
|
|
|
|
|
int bet = 0;
|
|
|
|
|
|
|
|
|
|
readFile();
|
|
|
|
|
|
|
|
|
|
// Niveaus setzen + Dude + Anzahl Gegenspieler
|
|
|
|
|
// 1. Fold -- Call
|
|
|
|
|
myNiveau[0] = 42 + myDude4/* - 6*(actualHand->getActualQuantityPlayers() - 2)*/;
|
|
|
|
|
// 2. Check -- Bet
|
|
|
|
|
myNiveau[1] = 53 + myDude4/* - 6*(actualHand->getActualQuantityPlayers() - 2)*/;
|
|
|
|
|
// 3. Call -- Raise
|
|
|
|
|
myNiveau[2] = 64 + myDude4/* - 6*(actualHand->getActualQuantityPlayers() - 2)*/;
|
|
|
|
|
|
|
|
|
|
// auf Aggresivität des humanPlayers eingehen
|
|
|
|
|
// int aggValue = ( (50*(actualHand->getPlayerArray()[0]->getMyAverageSets()-6*actualHand->getSmallBlind())) / (actualHand->getStartQuantityPlayers()*actualHand->getStartCash() - 6*actualHand->getSmallBlind()) );
|
|
|
|
|
|
|
|
|
|
// if(aggValue > 0) {
|
|
|
|
|
// myNiveau[0] -= aggValue;
|
|
|
|
|
// myNiveau[2] -= aggValue;
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
// cout << "Spieler " << myID << ": Dude " << myDude4 << "\t Wert " << myHoleCardsValue << "\t Niveau " << myNiveau[0] << " " << myNiveau[1] << " " << myNiveau[2] << "\t Agg " << aggValue << " " << endl;
|
|
|
|
|
|
|
|
|
|
// eigenes mögliches highestSet
|
|
|
|
|
int individualHighestSet = actualHand->getRiver()->getHighestSet();
|
|
|
|
|
if(individualHighestSet > myCash) individualHighestSet = myCash;
|
|
|
|
|
|
|
|
|
|
// aktiv oder passiv?
|
|
|
|
|
if(actualHand->getRiver()->getHighestSet() > 0) {
|
|
|
|
|
|
|
|
|
|
// Verhaeltnis Set / Cash
|
|
|
|
|
if(myCash/individualHighestSet >= 25) {
|
|
|
|
|
myNiveau[0] += (25-myCash/individualHighestSet)/10;
|
|
|
|
|
} else {
|
|
|
|
|
myNiveau[0] += (25-myCash/individualHighestSet)/3;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Verhaeltnis Set / Cash für raise
|
|
|
|
|
if(myCash/individualHighestSet < 10) {
|
|
|
|
|
myNiveau[2] += (10-myCash/individualHighestSet)/2;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// raise (bei hohem Niveau)
|
|
|
|
|
if(myOdds >= myNiveau[2]) {
|
|
|
|
|
|
|
|
|
|
// raise-loop unterbinden -> d.h. entweder call oder bei superblatt all in
|
|
|
|
|
if(actualHand->getRiver()->getHighestSet() >= 12*actualHand->getSmallBlind()) {
|
|
|
|
|
// all in
|
|
|
|
|
if(myOdds >= myNiveau[2] + 8) {
|
|
|
|
|
raise = myCash;
|
|
|
|
|
myAction = 5;
|
|
|
|
|
}
|
|
|
|
|
// nur call
|
|
|
|
|
else {
|
|
|
|
|
myAction = 3;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Standard-Raise-Routine
|
|
|
|
|
} else {
|
|
|
|
|
// raise-Betrag ermitteln
|
|
|
|
|
raise = (((int)myOdds-myNiveau[2])/2)*2*actualHand->getSmallBlind();
|
|
|
|
|
// raise-Betrag zu klein -> mindestens Standard-raise
|
|
|
|
|
if(raise == 0) {
|
|
|
|
|
raise = actualHand->getRiver()->getHighestSet();
|
|
|
|
|
}
|
|
|
|
|
// all in bei nur wenigen Chips
|
|
|
|
|
if(myCash/(2*actualHand->getSmallBlind()) <= 8) {
|
|
|
|
|
raise = myCash;
|
|
|
|
|
}
|
|
|
|
|
myAction = 5;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
|
// call -> über niveau0, schon einiges gesetzt im flop, schon einiges insgesamt gesetzt
|
|
|
|
|
if(myOdds >= myNiveau[0] || (mySet >= actualHand->getRiver()->getHighestSet()/2 && myOdds >= myNiveau[0]-5) || (myRoundStartCash-myCash > individualHighestSet && myNiveau[0]-3)) {
|
|
|
|
|
// all in bei knappem call
|
|
|
|
|
if(myCash-actualHand->getRiver()->getHighestSet() <= (myCash*1)/4) {
|
|
|
|
|
raise = myCash;
|
|
|
|
|
myAction = 5;
|
|
|
|
|
}
|
|
|
|
|
else myAction = 3;
|
|
|
|
|
}
|
|
|
|
|
// fold
|
|
|
|
|
else {
|
|
|
|
|
myAction = 1;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
|
// check
|
|
|
|
|
if(myOdds < myNiveau[1]) {
|
|
|
|
|
myAction = 2;
|
|
|
|
|
}
|
|
|
|
|
// bet
|
|
|
|
|
else {
|
|
|
|
|
bet = (((int)myOdds-myNiveau[1])/3)*2*actualHand->getSmallBlind();
|
|
|
|
|
if(bet == 0) {
|
|
|
|
|
bet = 2*actualHand->getSmallBlind();
|
|
|
|
|
}
|
|
|
|
|
// all in bei nur wenigen Chips
|
|
|
|
|
if(myCash/(2*actualHand->getSmallBlind()) <= 6) {
|
|
|
|
|
raise = myCash;
|
|
|
|
|
}
|
|
|
|
|
// all in bei knappem bet
|
|
|
|
|
if(bet > (myCash*4.0)/5.0) {
|
|
|
|
|
bet = myCash;
|
|
|
|
|
}
|
|
|
|
|
myAction = 4;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
evaluation(bet, raise);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@@ -1644,6 +1710,7 @@ int LocalPlayer::flopCardsValue(int* cards) {
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void LocalPlayer::readFile() {
|
|
|
|
|
|
|
|
|
|
ConfigFile myConfig;
|
|
|
|
|