more polymorphie steps for BeRo - local game --> unstable

This commit is contained in:
doitux
2007-08-04 22:05:12 +00:00
parent 07f8a2aaeb
commit 0a0a24433e
12 changed files with 216 additions and 25 deletions
+2 -2
View File
@@ -11,8 +11,8 @@
//
#include "localberofactory.h"
LocalBeRoFactory::LocalBeRoFactory ( HandInterface* hi )
: BeRoFactoryInterface() , myHand ( hi )
LocalBeRoFactory::LocalBeRoFactory (HandInterface* hi, int id, int aP, int dP, int sB)
: BeRoFactoryInterface() , myHand(hi), myID(id), actualQuantityPlayers(aP), dealerPosition(dP), smallBlind(sB)
{}
+12 -1
View File
@@ -23,7 +23,7 @@
class LocalBeRoFactory : public BeRoFactoryInterface
{
public:
LocalBeRoFactory(HandInterface* hi);
LocalBeRoFactory(HandInterface* hi, int id, int aP, int dP, int sB);
~LocalBeRoFactory();
@@ -33,6 +33,17 @@ private:
HandInterface* myHand;
int myID;
int actualQuantityPlayers;
int dealerPosition;
int bigBlindPosition;
int smallBlind;
int highestSet;
bool preflopFirstRound;
int playersTurn;
};
#endif
@@ -0,0 +1,127 @@
/***************************************************************************
* Copyright (C) 2006 by FThauer FHammer *
* f.thauer@web.de *Irische Segenswnsche,
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License *
* along with this program; if not, write to the *
* Free Software Foundation, Inc., *
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
***************************************************************************/
#include "localberopreflop.h"
#include <handinterface.h>
#include <game_defs.h>
using namespace std;
LocalBeRoPreflop::LocalBeRoPreflop(HandInterface* bR, int id, int qP, int dP, int sB) : LocalBeRo(), myHand(bR), myID(id), actualQuantityPlayers(qP), dealerPosition(dP), bigBlindPosition(0), smallBlind(sB), highestSet(2*sB), preflopFirstRound(1), playersTurn(0)
{
// // BigBlind ermitteln
bigBlindPosition = dealerPosition;
while (myHand->getPlayerArray()[bigBlindPosition]->getMyButton() != 3) {
bigBlindPosition = (bigBlindPosition+1)%(MAX_NUMBER_OF_PLAYERS);
}
// // erste Spielernummer fr preflopRun() setzen
playersTurn = bigBlindPosition;
cout << "LocalBeroPreflop erstellt" << endl;
}
LocalBeRoPreflop::~LocalBeRoPreflop()
{
}
void LocalBeRoPreflop::preflopRun() {
cout << "LocalBeroPreflopRun!!!" << endl;
// cout << "NextPlayerSpeed2 stop" << endl;
int i;
bool allHighestSet = 1;
// prfe, ob alle Sets gleich sind ( falls nicht, dann allHighestSet = 0 )
for(i=0; i<MAX_NUMBER_OF_PLAYERS; i++) {
if(myHand->getPlayerArray()[i]->getMyActiveStatus() && myHand->getPlayerArray()[i]->getMyAction() != 1 && myHand->getPlayerArray()[i]->getMyAction() != 6) {
if(highestSet != myHand->getPlayerArray()[i]->getMySet()) { allHighestSet=0; }
}
}
// BigBlind ermitteln
bigBlindPosition = dealerPosition;
while (myHand->getPlayerArray()[bigBlindPosition]->getMyButton() != 3) {
bigBlindPosition = (bigBlindPosition+1)%(MAX_NUMBER_OF_PLAYERS);
}
// prfen, ob Preflop wirklich dran ist
if(!preflopFirstRound && allHighestSet) {
// Preflop nicht dran, weil wir nicht mehr in erster PreflopRunde und alle Sets gleich sind
//also gehe in Flop
myHand->setActualRound(1);
//Action loeschen und ActionButtons refresh
for(i=0; i<MAX_NUMBER_OF_PLAYERS; i++) {
if(myHand->getPlayerArray()[i]->getMyAction() != 1 && myHand->getPlayerArray()[i]->getMyAction() != 6) myHand->getPlayerArray()[i]->setMyAction(0);
}
//Sets in den Pot verschieben und Sets = 0 und Pot-refresh
myHand->getBoard()->collectSets();
myHand->getBoard()->collectPot();
myHand->getGuiInterface()->refreshPot();
myHand->getGuiInterface()->refreshSet();
myHand->getGuiInterface()->refreshCash();
for(i=0; i<MAX_NUMBER_OF_PLAYERS; i++) { myHand->getGuiInterface()->refreshAction(i,0); }
myHand->switchRounds();
}
else {
// Preflop ist wirklich dran
// naechsten Spieler ermitteln
do {
playersTurn = (playersTurn+1)%(MAX_NUMBER_OF_PLAYERS);
// falls BigBlind, dann PreflopFirstRound zuende
if(myHand->getPlayerArray()[playersTurn]->getMyButton() == 3) preflopFirstRound = 0;
} while(!(myHand->getPlayerArray()[playersTurn]->getMyActiveStatus()) || myHand->getPlayerArray()[playersTurn]->getMyAction() == 1 || myHand->getPlayerArray()[playersTurn]->getMyAction() == 6);
myHand->getPlayerArray()[playersTurn]->setMyTurn(1);
//highlight active players groupbox and clear action
myHand->getGuiInterface()->refreshGroupbox(playersTurn,2);
myHand->getGuiInterface()->refreshAction(playersTurn,0);
if(playersTurn == 0) {
// Wir sind dran
myHand->getGuiInterface()->meInAction();
}
else {
//Gegner sind dran
// cout << "NextPlayerSpeed3 start" << endl;
myHand->getGuiInterface()->preflopAnimation2();
}
}
}
void LocalBeRoPreflop::nextPlayer2() {
// cout << "NextPlayerSpeed3 stop" << endl;
myHand->getPlayerArray()[playersTurn]->action();
}
@@ -0,0 +1,66 @@
/***************************************************************************
* Copyright (C) 2006 by FThauer FHammer *
* f.thauer@web.de *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License *
* along with this program; if not, write to the *
* Free Software Foundation, Inc., *
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
*************************************************************************/
#ifndef LOCALBEROPREFLOP_H
#define LOCALBEROPREFLOP_H
#include <iostream>
#include <localbero.h>
class HandInterface;
class LocalBeRoPreflop : public LocalBeRo{
public:
LocalBeRoPreflop(HandInterface*, int, int, int, int);
~LocalBeRoPreflop();
void setPlayersTurn(int theValue) { playersTurn = theValue; }
int getPlayersTurn() const { return playersTurn; }
void setHighestSet(int theValue) { highestSet = theValue; }
int getHighestSet() const { return highestSet;}
void setPreflopFirstRound(bool theValue) { preflopFirstRound = theValue; }
bool setPreflopFirstRound() const { return preflopFirstRound; }
void preflopRun();
void nextPlayer2();
private:
HandInterface *myHand;
int myID;
int actualQuantityPlayers;
int dealerPosition;
int bigBlindPosition;
int smallBlind;
int highestSet;
bool preflopFirstRound;
int playersTurn;
};
#endif
@@ -26,7 +26,6 @@
#include "localflop.h"
#include "localturn.h"
#include "localriver.h"
#include "localbero.h"
#include "localberofactory.h"
#include <configfile.h>
@@ -57,7 +56,5 @@ TurnInterface* LocalEngineFactory::createTurn(HandInterface* hi, int id, int aP,
RiverInterface* LocalEngineFactory::createRiver(HandInterface* hi, int id, int aP, int dP, int sB) { return new LocalRiver(hi, id, aP, dP, sB); }
// BeRoInterface* LocalEngineFactory::createBeRo() { return new LocalBeRo(); }
BeRoFactoryInterface* LocalEngineFactory::createBeRoFactory(HandInterface* hi) { return new LocalBeRoFactory(hi); }
BeRoFactoryInterface* LocalEngineFactory::createBeRoFactory(HandInterface* hi, int id, int aP, int dP, int sB) { return new LocalBeRoFactory(hi, id, aP, dP, sB); }
+1 -3
View File
@@ -29,7 +29,6 @@
#include <flopinterface.h>
#include <turninterface.h>
#include <riverinterface.h>
// #include <berointerface.h>
#include <berofactoryinterface.h>
class ConfigFile;
@@ -47,8 +46,7 @@ public:
FlopInterface* createFlop(HandInterface* hi, int id, int aP, int dP, int sB);
TurnInterface* createTurn(HandInterface* hi, int id, int aP, int dP, int sB);
RiverInterface* createRiver(HandInterface* hi, int id, int aP, int dP, int sB);
// BeRoInterface* createBeRo();
BeRoFactoryInterface* createBeRoFactory(HandInterface* hi);
BeRoFactoryInterface* createBeRoFactory(HandInterface* hi, int id, int aP, int dP, int sB);
private:
ConfigFile *myConfig;
+1 -1
View File
@@ -172,7 +172,7 @@ LocalHand::LocalHand(boost::shared_ptr<EngineFactory> f, GuiInterface *g, BoardI
myTurn = myFactory->createTurn(this, myID, actualQuantityPlayers, dealerPosition, smallBlind);
myRiver = myFactory->createRiver(this, myID, actualQuantityPlayers, dealerPosition, smallBlind);
myBeRoFactory = myFactory->createBeRoFactory(this);
myBeRoFactory = myFactory->createBeRoFactory(this, myID, actualQuantityPlayers, dealerPosition, smallBlind);
myBeRo = myBeRoFactory->switchRounds();
}