This commit is contained in:
doitux
2007-04-03 10:55:16 +00:00
parent 2a4d935827
commit b79a3a8e43
14 changed files with 726 additions and 355 deletions
+104 -37
View File
@@ -25,6 +25,14 @@ 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), sBluff(0), sBluffStatus(0)
{
// for statistic development
// if(myID==0) {
// myActiveStatus=0;
// myCash=0;
// }
////////////////////////////
// myBestHandPosition mit -1 initialisieren
int i;
for(i=0; i<5; i++) {
@@ -50,13 +58,14 @@ LocalPlayer::LocalPlayer(BoardInterface *b, int id, std::string name, std::strin
int interval = 7;
int count = 4;
int tempArray[4];
int *tempArray = new int[count];
myTool.getRandNumber(0, 2*interval, count, tempArray, 0);
for(i=0; i<count; i++) {
myDude4 += tempArray[i];
}
myDude4 = (myDude4/count)-interval;
delete[] tempArray;
myCardsValue = new CardsValue;
@@ -147,7 +156,7 @@ void LocalPlayer::preflopEngine() {
// 1. Fold -- Call
myNiveau[0] = 43 + myDude4 - 6*(players - 2);
// 3. Call -- Raise
myNiveau[2] = 50 + myDude4 - 6*(players - 2);
myNiveau[2] = 54 + myDude4 - 7*(players - 2);
// eigenes mögliches highestSet
int individualHighestSet = actualHand->getPreflop()->getHighestSet();
@@ -161,19 +170,22 @@ void LocalPlayer::preflopEngine() {
}
// Verhaeltnis Set / Cash für raise
if(myCash/individualHighestSet < 10) {
myNiveau[2] += (10-myCash/individualHighestSet)/2;
if(myCash/individualHighestSet < 11) {
myNiveau[2] += (11-myCash/individualHighestSet)/2;
}
// cout << myID << ": " << myHoleCardsValue << " - " << myNiveau[0] << " " << myNiveau[2] << " - " << myCards[0] << " " << myCards[1] << endl;
// Aggresivität des humanPlayers auslesen
// Aggresivität des humanPlayers auslesen -> nur wenn er aktiv ist !
int aggValue = (int)(((actualHand->getPlayerArray()[0]->getMyAggressive()*1.0)/7.0 - 1.0/actualHand->getActualQuantityPlayers())*21.0);
// cout << aggValue << " ";
myNiveau[0] -= aggValue;
myNiveau[2] -= aggValue;
if(actualHand->getPlayerArray()[0]->getMyActiveStatus()) {
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;
@@ -195,7 +207,13 @@ void LocalPlayer::preflopEngine() {
}
// nur call
else {
myAction = 3;
// all in bei knappem call
if(myCash-actualHand->getPreflop()->getHighestSet() <= (myCash*1)/5) {
raise = myCash;
myAction = 5;
} else {
myAction = 3;
}
}
// Standard-Raise-Routine
@@ -222,10 +240,19 @@ void LocalPlayer::preflopEngine() {
}
else {
// call
if(myOdds >= myNiveau[0] || (mySet >= actualHand->getPreflop()->getHighestSet()/2 && myOdds >= myNiveau[0]-5)) {
if(myOdds >= myNiveau[0] || (mySet >= actualHand->getPreflop()->getHighestSet()/2 && myOdds >= myNiveau[0]-8)) {
// bigBlind --> check
if(myButton == 3 && mySet == actualHand->getPreflop()->getHighestSet()) myAction = 2;
else myAction = 3;
else {
// all in bei knappem call
if(myCash-actualHand->getPreflop()->getHighestSet() <= (myCash*1)/5) {
raise = myCash;
myAction = 5;
}
else {
myAction = 3;
}
}
}
// fold
else {
@@ -245,7 +272,14 @@ void LocalPlayer::preflopEngine() {
// Gegner raisen ebenfalls -> call
if(actualHand->getPreflop()->getHighestSet() >= 12*actualHand->getSmallBlind()) {
myAction = 3;
// all in bei knappem call
if(myCash-actualHand->getPreflop()->getHighestSet() <= (myCash*1)/5) {
raise = myCash;
myAction = 5;
}
else {
myAction = 3;
}
}
// Standard-Raise-Routine
else {
@@ -293,17 +327,19 @@ void LocalPlayer::flopEngine() {
// 2. Check -- Bet
myNiveau[1] = 54 + myDude4 - 6*(players - 2);
// 3. Call -- Raise
myNiveau[2] = 67 + myDude4 - 6*(players - 2);
myNiveau[2] = 69 + myDude4 - 7*(players - 2);
// eigenes mögliches highestSet
int individualHighestSet = actualHand->getFlop()->getHighestSet();
if(individualHighestSet > myCash) individualHighestSet = myCash;
// Aggresivität des humanPlayers auslesen
// Aggresivität des humanPlayers auslesen -> nur wenn er aktiv ist
int aggValue = (int)(((actualHand->getPlayerArray()[0]->getMyAggressive()*1.0)/7.0 - 1.0/actualHand->getActualQuantityPlayers())*21.0);
for(i=0; i<3; i++) {
myNiveau[i] -= aggValue;
if(actualHand->getPlayerArray()[0]->getMyActiveStatus()) {
for(i=0; i<3; i++) {
myNiveau[i] -= aggValue;
}
}
// Check-Bluff generieren
@@ -320,8 +356,8 @@ void LocalPlayer::flopEngine() {
}
// Verhaeltnis Set / Cash für raise
if(myCash/individualHighestSet < 10) {
myNiveau[2] += (10-myCash/individualHighestSet)/2;
if(myCash/individualHighestSet < 11) {
myNiveau[2] += (11-myCash/individualHighestSet)/2;
}
// raise (bei hohem Niveau)
@@ -336,7 +372,13 @@ void LocalPlayer::flopEngine() {
}
// nur call
else {
myAction = 3;
// all in bei knappem call
if(myCash-actualHand->getFlop()->getHighestSet() <= (myCash*1)/5) {
raise = myCash;
myAction = 5;
} else {
myAction = 3;
}
}
// Standard-Raise-Routine
@@ -777,13 +819,15 @@ void LocalPlayer::turnEngine() {
// 2. Check -- Bet
myNiveau[1] = 54 + myDude4/* - 6*(actualHand->getActualQuantityPlayers() - 2)*/;
// 3. Call -- Raise
myNiveau[2] = 66 + myDude4/* - 6*(actualHand->getActualQuantityPlayers() - 2)*/;
myNiveau[2] = 69 + myDude4/* - 6*(actualHand->getActualQuantityPlayers() - 2)*/;
// Aggresivität des humanPlayers auslesen
// Aggresivität des humanPlayers auslesen -> nur wenn er aktiv ist
int aggValue = (int)(((actualHand->getPlayerArray()[0]->getMyAggressive()*1.0)/7.0 - 1.0/actualHand->getActualQuantityPlayers())*21.0);
for(i=0; i<3; i++) {
myNiveau[i] -= aggValue;
if(actualHand->getPlayerArray()[0]->getMyActiveStatus()) {
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;
@@ -807,8 +851,8 @@ void LocalPlayer::turnEngine() {
}
// Verhaeltnis Set / Cash für raise
if(myCash/individualHighestSet < 10) {
myNiveau[2] += (10-myCash/individualHighestSet)/2;
if(myCash/individualHighestSet < 11) {
myNiveau[2] += (11-myCash/individualHighestSet)/2;
}
// raise (bei hohem Niveau)
@@ -823,7 +867,13 @@ void LocalPlayer::turnEngine() {
}
// nur call
else {
myAction = 3;
// all in bei knappem call
if(myCash-actualHand->getTurn()->getHighestSet() <= (myCash*1)/5) {
raise = myCash;
myAction = 5;
} else {
myAction = 3;
}
}
// Standard-Raise-Routine
@@ -974,6 +1024,8 @@ void LocalPlayer::turnEngine() {
// cout << myID << ": " << myOdds << " - " << myNiveau[0] << " " << myNiveau[1] << " " << myNiveau[2] << " - " << "Bluff: " << sBluffStatus << endl;
// cout << "myAction: " << myAction << endl;
evaluation(bet, raise);
}
@@ -1014,13 +1066,15 @@ void LocalPlayer::riverEngine() {
// 2. Check -- Bet
myNiveau[1] = 54 + myDude4/* - 6*(actualHand->getActualQuantityPlayers() - 2)*/;
// 3. Call -- Raise
myNiveau[2] = 66 + myDude4/* - 6*(actualHand->getActualQuantityPlayers() - 2)*/;
myNiveau[2] = 69 + myDude4/* - 6*(actualHand->getActualQuantityPlayers() - 2)*/;
// Aggresivität des humanPlayers auslesen
// Aggresivität des humanPlayers auslesen -> nur wenn er aktiv ist
int aggValue = (int)(((actualHand->getPlayerArray()[0]->getMyAggressive()*1.0)/7.0 - 1.0/actualHand->getActualQuantityPlayers())*21.0);
for(i=0; i<3; i++) {
myNiveau[i] -= aggValue;
if(actualHand->getPlayerArray()[0]->getMyActiveStatus()) {
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;
@@ -1040,8 +1094,8 @@ void LocalPlayer::riverEngine() {
}
// Verhaeltnis Set / Cash für raise
if(myCash/individualHighestSet < 10) {
myNiveau[2] += (10-myCash/individualHighestSet)/2;
if(myCash/individualHighestSet < 11) {
myNiveau[2] += (11-myCash/individualHighestSet)/2;
}
// raise (bei hohem Niveau)
@@ -1055,7 +1109,13 @@ void LocalPlayer::riverEngine() {
}
// nur call
else {
myAction = 3;
// all in bei knappem call
if(myCash-actualHand->getRiver()->getHighestSet() <= (myCash*1)/5) {
raise = myCash;
myAction = 5;
} else {
myAction = 3;
}
}
}
// Standard-Raise-Routine
@@ -1218,6 +1278,7 @@ void LocalPlayer::evaluation(int bet, int raise) {
default: cout << "ERROR - wrong init of actualRound" << endl;
}
// cout << "myAction(evaluation): " << myAction << endl;
switch(myAction) {
// none
case 0: {}
@@ -1230,12 +1291,14 @@ void LocalPlayer::evaluation(int bet, int raise) {
break;
// call
case 3: {
// cout << "evaluation(call) - highestSet = " << highestSet << endl;
// all in
if(highestSet >= myCash) {
mySet += myCash;
myCash = 0;
myAction = 6;
}
if(highestSet >= myCash + mySet) {
mySet += myCash;
myCash = 0;
myAction = 6;
// cout << "evaluation(call) - mySet: " << mySet << endl;
}
// sonst
else {
myCash = myCash - highestSet + mySet;
@@ -1262,11 +1325,13 @@ void LocalPlayer::evaluation(int bet, int raise) {
break;
// raise
case 5: {
// cout << "evaluation(raise) - highestSet = " << highestSet << " - raise: " << raise << endl;
// all in
if(highestSet + raise >= myCash) {
mySet += myCash;
myCash = 0;
myAction = 6;
// cout << "evaluation(raise) - mySet: " << mySet << endl;
if(mySet > highestSet) highestSet = mySet;
}
// sonst
@@ -1283,6 +1348,8 @@ void LocalPlayer::evaluation(int bet, int raise) {
default: {}
}
// cout << "highestSet(ende evaluation): " << highestSet << endl;
switch(actualHand->getActualRound()) {
case 0: actualHand->getPreflop()->setHighestSet(highestSet);
break;