1099 lines
34 KiB
C++
1099 lines
34 KiB
C++
/***************************************************************************
|
|
* 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. *
|
|
***************************************************************************/
|
|
#include "log.h"
|
|
|
|
#include "mainwindowimpl.h"
|
|
|
|
using namespace std;
|
|
|
|
Log::Log(mainWindowImpl* w) : myW(w)
|
|
{
|
|
myW->setLog(this);
|
|
|
|
myConfig = new ConfigFile;
|
|
if(myConfig->readConfigString("LogDir") != "" && QDir::QDir(QString::fromUtf8(myConfig->readConfigString("LogDir").c_str())).exists()) {
|
|
|
|
#ifdef _WIN32
|
|
myLogDir = new QDir(QString::fromUtf8(myConfig->readConfigString("LogDir").c_str()));
|
|
#else
|
|
myLogDir = new QDir(QString::fromUtf8(myConfig->readConfigString("LogDir").c_str()));
|
|
#endif
|
|
myLogFile = new QFile(myLogDir->absolutePath()+"/pokerth-log-"+QDateTime::currentDateTime().toString("yyyy-MM-dd_hh.mm.ss")+".html");
|
|
|
|
//Logo-Pixmap extrahieren
|
|
QPixmap::QPixmap(":graphics/resources/graphics/logoChip3D.png").save(myLogDir->absolutePath()+"/logo.png");
|
|
|
|
// myW->textBrowser_Log->append(myLogFile->fileName());
|
|
|
|
myLogFile->open( QIODevice::WriteOnly );
|
|
QTextStream stream( myLogFile );
|
|
stream << "<html>\n";
|
|
stream << "<head>\n";
|
|
stream << "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf8\">";
|
|
stream << "</head>\n";
|
|
stream << "<body>\n";
|
|
stream << "<img src='logo.png'>\n";
|
|
stream << "<h3><b>Log-File for PokerTH Session started on "+QDate::currentDate().toString("yyyy-MM-dd")+" at "+QTime::currentTime().toString("hh:mm:ss")+"</b></h3>\n";
|
|
// stream << "</body>\n";
|
|
// stream << "</html>\n";
|
|
myLogFile->close();
|
|
|
|
linesInFile = 3;
|
|
|
|
//Zu alte Dateien löschen!!!
|
|
int daysUntilWaste = myConfig->readConfigInt("LogStoreDuration");
|
|
int i;
|
|
|
|
QStringList filters("pokerth-log*");
|
|
QStringList logFileList = myLogDir->entryList(filters, QDir::Files);
|
|
|
|
for(i=0; i<logFileList.count(); i++) {
|
|
|
|
// cout << logFileList.at(i).toStdString() << endl;
|
|
|
|
QString dateString = logFileList.at(i);
|
|
dateString.remove("pokerth-log-");
|
|
dateString.remove(10,14);
|
|
|
|
QDate dateOfFile(QDate::fromString(dateString, Qt::ISODate));
|
|
QDate today(QDate::currentDate());
|
|
|
|
// cout << dateOfFile.daysTo(today) << endl;
|
|
|
|
if (dateOfFile.daysTo(today) > daysUntilWaste) {
|
|
|
|
// cout << QString::QString(myLogDir->absolutePath()+"/"+logFileList.at(i)).toStdString() << endl;
|
|
QFile fileToDelete(myLogDir->absolutePath()+"/"+logFileList.at(i));
|
|
fileToDelete.remove();
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
else { cout << "Log directory doesn't exists. Cannot create log files"; }
|
|
|
|
}
|
|
|
|
Log::~Log()
|
|
{
|
|
}
|
|
|
|
void Log::logPlayerActionMsg(string playerName, int action, int setValue) {
|
|
|
|
int i;
|
|
|
|
QString msg;
|
|
msg = QString::fromUtf8(playerName.c_str());
|
|
|
|
switch (action) {
|
|
|
|
case 1: msg += " folds.";
|
|
break;
|
|
case 2: msg += " checks.";
|
|
break;
|
|
case 3: msg += " calls ";
|
|
break;
|
|
case 4: msg += " bets ";
|
|
break;
|
|
case 5: msg += " sets ";
|
|
break;
|
|
case 6: msg += " is all in with ";
|
|
break;
|
|
default: msg += "ERROR";
|
|
}
|
|
|
|
if (action >= 3) { msg += QString::number(setValue,10)+"$."; }
|
|
|
|
myW->textBrowser_Log->append(msg);
|
|
|
|
myLogFile->open( QIODevice::ReadWrite );
|
|
QTextStream stream( myLogFile );
|
|
for(i=0; i<=linesInFile; i++) { stream.readLine(); }
|
|
stream << msg+"</br>\n";
|
|
// stream << "</body>\n";
|
|
// stream << "</html>\n";
|
|
myLogFile->close();
|
|
|
|
linesInFile++;
|
|
|
|
}
|
|
|
|
void Log::logNewGameHandMsg(int gameID, int handID) {
|
|
|
|
int i, j ,k;
|
|
|
|
myW->textBrowser_Log->append("<b>## Game: "+QString::number(gameID,10)+" | Hand: "+QString::number(handID,10)+" ##</b>");
|
|
|
|
myLogFile->open( QIODevice::ReadWrite );
|
|
QTextStream stream( myLogFile );
|
|
for(i=0; i<=linesInFile; i++) { stream.readLine(); }
|
|
|
|
stream << "<p><b>####################   Game: "+QString::number(gameID,10)+" | Hand: "+QString::number(handID,10)+"   ####################</b></br>";
|
|
stream << "CASH: ";
|
|
|
|
//Aktive Spieler zählen
|
|
int activePlayersCounter = 0;
|
|
for (k=0; k<myW->getMaxQuantityPlayers(); k++) {
|
|
if (myW->getActualHand()->getPlayerArray()[k]->getMyActiveStatus() == 1) activePlayersCounter++;
|
|
}
|
|
k = 0;
|
|
if(activePlayersCounter > 2) {
|
|
|
|
for(i=0; i<myW->getActualHand()->getStartQuantityPlayers(); i++) {
|
|
|
|
if(myW->getActualHand()->getPlayerArray()[i]->getMyActiveStatus()) {
|
|
//print cash only for active players
|
|
|
|
|
|
if(myW->getActualHand()->getPlayerArray()[i]->getMyButton() == 1) {
|
|
if(k==1) { stream << ", "; }
|
|
k=1;
|
|
stream << QString::fromUtf8(myW->getActualHand()->getPlayerArray()[i]->getMyName().c_str())+" (Dealer): "+QString::number(myW->getActualHand()->getPlayerArray()[i]->getMyCash(),10)+"$";
|
|
}
|
|
else {
|
|
if(k==1) { stream << ", "; }
|
|
k=1;
|
|
stream << QString::fromUtf8(myW->getActualHand()->getPlayerArray()[i]->getMyName().c_str())+": "+QString::number(myW->getActualHand()->getPlayerArray()[i]->getMyCash()+myW->getActualHand()->getPlayerArray()[i]->getMySet(),10)+"$";
|
|
}
|
|
}
|
|
}
|
|
}
|
|
else {
|
|
for(i=0; i<myW->getActualHand()->getStartQuantityPlayers(); i++) {
|
|
if(myW->getActualHand()->getPlayerArray()[i]->getMyActiveStatus()) {
|
|
//print cash only for active players
|
|
if(myW->getActualHand()->getPlayerArray()[i]->getMyButton() == 3) {
|
|
if(k==1) { stream << ", "; }
|
|
k=1;
|
|
stream << QString::fromUtf8(myW->getActualHand()->getPlayerArray()[i]->getMyName().c_str())+" (Dealer): "+QString::number(myW->getActualHand()->getPlayerArray()[i]->getMyCash()+myW->getActualHand()->getPlayerArray()[i]->getMySet(),10)+"$";
|
|
}
|
|
else {
|
|
if(k==1) { stream << ", "; }
|
|
k=1;
|
|
stream << QString::fromUtf8(myW->getActualHand()->getPlayerArray()[i]->getMyName().c_str())+": "+QString::number(myW->getActualHand()->getPlayerArray()[i]->getMyCash()+myW->getActualHand()->getPlayerArray()[i]->getMySet(),10)+"$";
|
|
}
|
|
}
|
|
}
|
|
}
|
|
stream << "</br>BLINDS: ";
|
|
for(i=0; i<myW->getMaxQuantityPlayers(); i++) {
|
|
|
|
j = 0;
|
|
//Aktive Spieler zählen
|
|
int activePlayersCounter = 0;
|
|
for (k=0; k<myW->getMaxQuantityPlayers(); k++) {
|
|
if (myW->getActualHand()->getPlayerArray()[k]->getMyAction() != 1 && myW->getActualHand()->getPlayerArray()[k]->getMyActiveStatus() == 1) activePlayersCounter++;
|
|
}
|
|
if(activePlayersCounter < 3) { j=1; }
|
|
|
|
// cout << activePlayersCounter << endl;
|
|
// cout << (i+myW->getActualHand()->getDealerPosition()+j)%5 << endl;
|
|
|
|
switch (myW->getActualHand()->getPlayerArray()[(i+myW->getActualHand()->getDealerPosition()+j)%myW->getMaxQuantityPlayers()]->getMyButton()) {
|
|
case 2 : stream << QString::fromUtf8(myW->getActualHand()->getPlayerArray()[(i+myW->getActualHand()->getDealerPosition()+j)%myW->getMaxQuantityPlayers()]->getMyName().c_str())+" ("+QString::number(myW->getActualHand()->getPlayerArray()[(i+myW->getActualHand()->getDealerPosition()+j)%myW->getMaxQuantityPlayers()]->getMySet(),10)+"$), ";
|
|
break;
|
|
case 3 : stream << QString::fromUtf8(myW->getActualHand()->getPlayerArray()[(i+myW->getActualHand()->getDealerPosition()+j)%myW->getMaxQuantityPlayers()]->getMyName().c_str())+" ("+QString::number(myW->getActualHand()->getPlayerArray()[(i+myW->getActualHand()->getDealerPosition()+j)%myW->getMaxQuantityPlayers()]->getMySet(),10)+"$)";
|
|
break;
|
|
default :;
|
|
}
|
|
}
|
|
|
|
stream << "</br></br><b>PREFLOP</b>";
|
|
stream << "</br>\n";
|
|
|
|
myLogFile->close();
|
|
|
|
linesInFile = linesInFile++;
|
|
|
|
}
|
|
|
|
void Log::logPlayerWinsMsg(int playerID, int pot) {
|
|
|
|
int i;
|
|
|
|
myLogFile->open( QIODevice::ReadWrite );
|
|
QTextStream stream( myLogFile );
|
|
for(i=0; i<=linesInFile; i++) { stream.readLine(); }
|
|
|
|
// if (cardsValueInt != -1) {
|
|
// myW->textBrowser_Log->append(QString::fromUtf8(myW->getActualHand()->getPlayerArray()[playerID]->getMyName())+" wins "+QString::number(pot,10)+"$ with "+translateCardsValueCode(cardsValueInt).at(0)+"!!! ");
|
|
// stream << "</br><i>"+QString::fromUtf8(myW->getActualHand()->getPlayerArray()[playerID]->getMyName())+" wins "+QString::number(pot,10)+"$!!!</i></p>\n";
|
|
// }
|
|
// else {
|
|
myW->textBrowser_Log->append(QString::fromUtf8(myW->getActualHand()->getPlayerArray()[playerID]->getMyName().c_str())+" wins "+QString::number(pot,10)+"$!!! ");
|
|
stream << "</br><i>"+QString::fromUtf8(myW->getActualHand()->getPlayerArray()[playerID]->getMyName().c_str())+" wins "+QString::number(pot,10)+"$!!!</i></p>\n";
|
|
// }
|
|
myLogFile->close();
|
|
|
|
linesInFile++;
|
|
}
|
|
|
|
void Log::logDealBoardCardsMsg(int roundID, int card1, int card2, int card3, int card4, int card5) {
|
|
|
|
int i;
|
|
|
|
myLogFile->open( QIODevice::ReadWrite );
|
|
QTextStream stream( myLogFile );
|
|
for(i=0; i<=linesInFile; i++) { stream.readLine(); }
|
|
|
|
QString round;
|
|
switch (roundID) {
|
|
|
|
case 1: round = "Flop";
|
|
myW->textBrowser_Log->append("--- "+round+" --- "+"["+translateCardCode(card1).at(0)+translateCardCode(card1).at(1)+","+translateCardCode(card2).at(0)+translateCardCode(card2).at(1)+","+translateCardCode(card3).at(0)+translateCardCode(card3).at(1)+"]");
|
|
stream << "</br><b>"+round.toUpper()+"</b> [board cards <b>"+translateCardCode(card1).at(0)+"</b>"+translateCardCode(card1).at(1)+",<b>"+translateCardCode(card2).at(0)+"</b>"+translateCardCode(card2).at(1)+",<b>"+translateCardCode(card3).at(0)+"</b>"+translateCardCode(card3).at(1)+"]"+"</br>\n";
|
|
break;
|
|
case 2: round = "Turn";
|
|
myW->textBrowser_Log->append("--- "+round+" --- "+"["+translateCardCode(card1).at(0)+translateCardCode(card1).at(1)+","+translateCardCode(card2).at(0)+translateCardCode(card2).at(1)+","+translateCardCode(card3).at(0)+translateCardCode(card3).at(1)+","+translateCardCode(card4).at(0)+translateCardCode(card4).at(1)+"]");
|
|
stream << "</br><b>"+round.toUpper()+"</b> [board cards <b>"+translateCardCode(card1).at(0)+"</b>"+translateCardCode(card1).at(1)+",<b>"+translateCardCode(card2).at(0)+"</b>"+translateCardCode(card2).at(1)+",<b>"+translateCardCode(card3).at(0)+"</b>"+translateCardCode(card3).at(1)+",<b>"+translateCardCode(card4).at(0)+"</b>"+translateCardCode(card4).at(1)+"]"+"</br>\n";
|
|
break;
|
|
case 3: round = "River";
|
|
myW->textBrowser_Log->append("--- "+round+" --- "+"["+translateCardCode(card1).at(0)+translateCardCode(card1).at(1)+","+translateCardCode(card2).at(0)+translateCardCode(card2).at(1)+","+translateCardCode(card3).at(0)+translateCardCode(card3).at(1)+","+translateCardCode(card4).at(0)+translateCardCode(card4).at(1)+","+translateCardCode(card5).at(0)+translateCardCode(card5).at(1)+"]");
|
|
stream << "</br><b>"+round.toUpper()+"</b> [board cards <b>"+translateCardCode(card1).at(0)+"</b>"+translateCardCode(card1).at(1)+",<b>"+translateCardCode(card2).at(0)+"</b>"+translateCardCode(card2).at(1)+",<b>"+translateCardCode(card3).at(0)+"</b>"+translateCardCode(card3).at(1)+",<b>"+translateCardCode(card4).at(0)+"</b>"+translateCardCode(card4).at(1)+",<b>"+translateCardCode(card5).at(0)+"</b>"+translateCardCode(card5).at(1)+"]"+"</br>\n";
|
|
break;
|
|
default: round = "ERROR";
|
|
}
|
|
|
|
myLogFile->close();
|
|
linesInFile++;
|
|
|
|
}
|
|
|
|
void Log::logFlipHoleCardsMsg(std::string playerName, int card1, int card2, int cardsValueInt, string showHas) {
|
|
|
|
int i;
|
|
|
|
myLogFile->open( QIODevice::ReadWrite );
|
|
QTextStream stream( myLogFile );
|
|
for(i=0; i<=linesInFile; i++) { stream.readLine(); }
|
|
|
|
if (cardsValueInt != -1) {
|
|
|
|
QString tempHandName;
|
|
// int sameHandCounter = 0;
|
|
// int difference = 0;
|
|
// int tempHighestCardsValueInt = 0;
|
|
//
|
|
// //erste Ziffer : Blattname
|
|
// int firstPart = cardsValueInt/100000000;
|
|
// //zweite und dritte Ziffer : Kicker, highest Card, usw.
|
|
// int secondPart = cardsValueInt/1000000 - firstPart*100;
|
|
// //vierte und fünfte Ziffer
|
|
// int thirdPart = cardsValueInt/10000 - firstPart*10000 - secondPart*100;
|
|
// // usw
|
|
// int fourthPart = cardsValueInt/100 - firstPart*1000000 - secondPart*10000 - thirdPart*100;
|
|
// //
|
|
// int fifthPart = cardsValueInt - firstPart*100000000 - secondPart*1000000 - thirdPart*10000 - fourthPart*100;
|
|
// // fuer highest Card
|
|
// int fifthPartA = cardsValueInt/10 - firstPart*10000000 - secondPart*100000 - thirdPart*1000 - fourthPart*10;
|
|
// int fifthPartB = cardsValueInt - firstPart*100000000 - secondPart*1000000 - thirdPart*10000 - fourthPart*100 - fifthPartA*10;
|
|
|
|
switch(cardsValueInt/100000000) {
|
|
// Royal Flush
|
|
case 9: {
|
|
tempHandName = translateCardsValueCode(cardsValueInt).at(0);
|
|
}
|
|
break;
|
|
// Straight Flush
|
|
case 8: {
|
|
tempHandName = translateCardsValueCode(cardsValueInt).at(0)+translateCardsValueCode(cardsValueInt).at(1);
|
|
}
|
|
break;
|
|
// Vierling
|
|
case 7: {
|
|
tempHandName = translateCardsValueCode(cardsValueInt).at(0)+translateCardsValueCode(cardsValueInt).at(1);
|
|
}
|
|
break;
|
|
// Full House
|
|
case 6: {
|
|
tempHandName = translateCardsValueCode(cardsValueInt).at(0)+translateCardsValueCode(cardsValueInt).at(1)+translateCardsValueCode(cardsValueInt).at(2);
|
|
}
|
|
break;
|
|
// Flush
|
|
case 5: {
|
|
tempHandName = translateCardsValueCode(cardsValueInt).at(0)+translateCardsValueCode(cardsValueInt).at(1);
|
|
}
|
|
break;
|
|
// Straight
|
|
case 4: {
|
|
tempHandName = translateCardsValueCode(cardsValueInt).at(0)+translateCardsValueCode(cardsValueInt).at(1);
|
|
}
|
|
break;
|
|
// Drilling
|
|
case 3: {
|
|
|
|
// Kicker anzeigen?
|
|
// for(i=0; i<5; i++) {
|
|
// if(myW->getActualHand()->getPlayerArray()[i]->getMyAction() != 1 && myW->getActualHand()->getPlayerArray()[i]->getMyActiveStatus() == 1 && myW->getActualHand()->getPlayerArray()[i]->getMyCardsValueInt()/100000000 == 3 && myW->getActualHand()->getPlayerArray()[i]->getMyCardsValueInt()/1000000 - (int)(myW->getActualHand()->getPlayerArray()[i]->getMyCardsValueInt()/100000000)*100 == secondPart) {
|
|
// sameHandCounter++;
|
|
// if(myW->getActualHand()->getPlayerArray()[i]->getMyCardsValueInt() > tempHighestCardsValueInt) {
|
|
// tempHighestCardsValueInt = myW->getActualHand()->getPlayerArray()[i]->getMyCardsValueInt();
|
|
// }
|
|
// }
|
|
// }
|
|
|
|
// Unterschied ermitteln
|
|
// for(i=0; i<5; i++) {
|
|
// if(myW->getActualHand()->getPlayerArray()[i]->getMyAction() != 1 && myW->getActualHand()->getPlayerArray()[i]->getMyActiveStatus() == 1 && myW->getActualHand()->getPlayerArray()[i]->getMyCardsValueInt()/100000000 == 3 && myW->getActualHand()->getPlayerArray()[i]->getMyCardsValueInt()/1000000 - (int)(myW->getActualHand()->getPlayerArray()[i]->getMyCardsValueInt()/100000000)*100 == secondPart) {
|
|
// sameHandCounter++;
|
|
// if(myW->getActualHand()->getPlayerArray()[i]->getMyCardsValueInt() > tempHighestCardsValueInt) {
|
|
// tempHighestCardsValueInt = myW->getActualHand()->getPlayerArray()[i]->getMyCardsValueInt();
|
|
// }
|
|
// }
|
|
// }
|
|
|
|
|
|
// if(sameHandCounter==1) {
|
|
tempHandName = translateCardsValueCode(cardsValueInt).at(0)+translateCardsValueCode(cardsValueInt).at(1);
|
|
/* } else {
|
|
if(cardsValueInt == tempHighestCardsValueInt) {
|
|
for(i=0; i<5; i++) {
|
|
if(myW->getActualHand()->getPlayerArray()[i]->getMyAction() != 1 && myW->getActualHand()->getPlayerArray()[i]->getMyActiveStatus() == 1 && myW->getActualHand()->getPlayerArray()[i]->getMyCardsValueInt()/100000000 == 3 && myW->getActualHand()->getPlayerArray()[i]->getMyCardsValueInt()/1000000 - (int)(myW->getActualHand()->getPlayerArray()[i]->getMyCardsValueInt()/100000000)*100 == secondPart) ;
|
|
}
|
|
}
|
|
}*/
|
|
}
|
|
break;
|
|
// Doppelpaar
|
|
case 2: {
|
|
tempHandName = translateCardsValueCode(cardsValueInt).at(0)+translateCardsValueCode(cardsValueInt).at(1)+translateCardsValueCode(cardsValueInt).at(2);
|
|
}
|
|
break;
|
|
// Paar
|
|
case 1: {
|
|
tempHandName = translateCardsValueCode(cardsValueInt).at(0)+translateCardsValueCode(cardsValueInt).at(1);
|
|
}
|
|
break;
|
|
// highestCard
|
|
case 0: {
|
|
tempHandName = translateCardsValueCode(cardsValueInt).at(0)+translateCardsValueCode(cardsValueInt).at(1);
|
|
}
|
|
break;
|
|
default: {}
|
|
}
|
|
|
|
myW->textBrowser_Log->append(QString::fromUtf8(playerName.c_str())+" "+QString::fromUtf8(showHas.c_str())+" \""+tempHandName+"\"");
|
|
stream << QString::fromUtf8(playerName.c_str())+" "+QString::fromUtf8(showHas.c_str())+" [ <b>"+translateCardCode(card1).at(0)+"</b>"+translateCardCode(card1).at(1)+",<b>"+translateCardCode(card2).at(0)+"</b>"+translateCardCode(card2).at(1)+"] - "+tempHandName+"</br>\n";
|
|
|
|
}
|
|
else {
|
|
myW->textBrowser_Log->append(QString::fromUtf8(playerName.c_str())+" "+QString::fromUtf8(showHas.c_str())+" ["+translateCardCode(card1).at(0)+translateCardCode(card1).at(1)+","+translateCardCode(card2).at(0)+translateCardCode(card2).at(1)+"]");
|
|
stream << QString::fromUtf8(playerName.c_str())+" "+QString::fromUtf8(showHas.c_str())+" [<b>"+translateCardCode(card1).at(0)+"</b>"+translateCardCode(card1).at(1)+",<b>"+translateCardCode(card2).at(0)+"</b>"+translateCardCode(card2).at(1)+"]"+"</br>\n";
|
|
|
|
}
|
|
myLogFile->close();
|
|
linesInFile++;
|
|
}
|
|
|
|
QStringList Log::translateCardCode(int cardCode) {
|
|
|
|
int value = cardCode%13;
|
|
int color = cardCode/13;
|
|
|
|
QStringList cardString;
|
|
|
|
switch (value) {
|
|
|
|
case 0: cardString << "2";
|
|
break;
|
|
case 1: cardString << "3";
|
|
break;
|
|
case 2: cardString << "4";
|
|
break;
|
|
case 3: cardString << "5";
|
|
break;
|
|
case 4: cardString << "6";
|
|
break;
|
|
case 5: cardString << "7";
|
|
break;
|
|
case 6: cardString << "8";
|
|
break;
|
|
case 7: cardString << "9";
|
|
break;
|
|
case 8: cardString << "10";
|
|
break;
|
|
case 9: cardString << "J";
|
|
break;
|
|
case 10: cardString << "Q";
|
|
break;
|
|
case 11: cardString << "K";
|
|
break;
|
|
case 12: cardString << "A";
|
|
break;
|
|
default: cardString << "ERROR";
|
|
}
|
|
|
|
switch (color) {
|
|
|
|
case 0: cardString << "d";
|
|
break;
|
|
case 1: cardString << "h";
|
|
break;
|
|
case 2: cardString << "s";
|
|
break;
|
|
case 3: cardString << "c";
|
|
break;
|
|
default: cardString << "ERROR";
|
|
}
|
|
|
|
return cardString;
|
|
}
|
|
|
|
QStringList Log::translateCardsValueCode(int cardsValueCode) {
|
|
|
|
QStringList cardString;
|
|
|
|
//erste Ziffer : Blattname
|
|
int firstPart = cardsValueCode/100000000;
|
|
//zweite und dritte Ziffer : Kicker, highest Card, usw.
|
|
int secondPart = cardsValueCode/1000000 - firstPart*100;
|
|
//vierte und fünfte Ziffer
|
|
int thirdPart = cardsValueCode/10000 - firstPart*10000 - secondPart*100;
|
|
// usw
|
|
int fourthPart = cardsValueCode/100 - firstPart*1000000 - secondPart*10000 - thirdPart*100;
|
|
//
|
|
int fifthPart = cardsValueCode - firstPart*100000000 - secondPart*1000000 - thirdPart*10000 - fourthPart*100;
|
|
// fuer highest Card
|
|
int fifthPartA = cardsValueCode/10 - firstPart*10000000 - secondPart*100000 - thirdPart*1000 - fourthPart*10;
|
|
int fifthPartB = cardsValueCode - firstPart*100000000 - secondPart*1000000 - thirdPart*10000 - fourthPart*100 - fifthPartA*10;
|
|
|
|
|
|
switch (firstPart) {
|
|
|
|
case 9: cardString << "Royal Flush";
|
|
break;
|
|
case 8: {
|
|
cardString << "Straight Flush, ";
|
|
switch(secondPart) {
|
|
case 11: cardString << "King high";
|
|
break;
|
|
case 10: cardString << "Queen high";
|
|
break;
|
|
case 9: cardString << "Jack high";
|
|
break;
|
|
case 8: cardString << "Ten high";
|
|
break;
|
|
case 7: cardString << "Nine high";
|
|
break;
|
|
case 6: cardString << "Eight high";
|
|
break;
|
|
case 5: cardString << "Seven high";
|
|
break;
|
|
case 4: cardString << "Six high";
|
|
break;
|
|
case 3: cardString << "Five high";
|
|
break;
|
|
default: cardString << "ERROR";
|
|
}
|
|
}
|
|
break;
|
|
case 7: {
|
|
cardString << "Four of a Kind, ";
|
|
switch(secondPart) {
|
|
case 12: cardString << "Aces";
|
|
break;
|
|
case 11: cardString << "Kings";
|
|
break;
|
|
case 10: cardString << "Queens";
|
|
break;
|
|
case 9: cardString << "Jacks";
|
|
break;
|
|
case 8: cardString << "Tens";
|
|
break;
|
|
case 7: cardString << "Nines";
|
|
break;
|
|
case 6: cardString << "Eights";
|
|
break;
|
|
case 5: cardString << "Sevens";
|
|
break;
|
|
case 4: cardString << "Sixes";
|
|
break;
|
|
case 3: cardString << "Fives";
|
|
break;
|
|
case 2: cardString << "Fours";
|
|
break;
|
|
case 1: cardString << "Threes";
|
|
break;
|
|
case 0: cardString << "Deuces";
|
|
break;
|
|
default: cardString << "ERROR";
|
|
}
|
|
}
|
|
break;
|
|
case 6: {
|
|
cardString << "Full House, ";
|
|
//Drilling
|
|
switch(secondPart) {
|
|
case 12: cardString << "Aces full of ";
|
|
break;
|
|
case 11: cardString << "Kings full of ";
|
|
break;
|
|
case 10: cardString << "Queens full of ";
|
|
break;
|
|
case 9: cardString << "Jacks full of ";
|
|
break;
|
|
case 8: cardString << "Tens full of ";
|
|
break;
|
|
case 7: cardString << "Nines full of ";
|
|
break;
|
|
case 6: cardString << "Eights full of ";
|
|
break;
|
|
case 5: cardString << "Sevens full of ";
|
|
break;
|
|
case 4: cardString << "Sixes full of ";
|
|
break;
|
|
case 3: cardString << "Fives full of ";
|
|
break;
|
|
case 2: cardString << "Fours full of ";
|
|
break;
|
|
case 1: cardString << "Threes full of ";
|
|
break;
|
|
case 0: cardString << "Deuces full of ";
|
|
break;
|
|
default: cardString << "ERROR";
|
|
}
|
|
//Pärchen
|
|
switch(thirdPart) {
|
|
case 12: cardString << "Aces";
|
|
break;
|
|
case 11: cardString << "Kings";
|
|
break;
|
|
case 10: cardString << "Queens";
|
|
break;
|
|
case 9: cardString << "Jacks";
|
|
break;
|
|
case 8: cardString << "Tens";
|
|
break;
|
|
case 7: cardString << "Nines";
|
|
break;
|
|
case 6: cardString << "Eights";
|
|
break;
|
|
case 5: cardString << "Sevens";
|
|
break;
|
|
case 4: cardString << "Sixes";
|
|
break;
|
|
case 3: cardString << "Fives";
|
|
break;
|
|
case 2: cardString << "Fours";
|
|
break;
|
|
case 1: cardString << "Threes";
|
|
break;
|
|
case 0: cardString << "Deuces";
|
|
break;
|
|
default: cardString << "ERROR";
|
|
}
|
|
}
|
|
break;
|
|
case 5: {
|
|
cardString << "Flush, ";
|
|
//highest Card
|
|
switch(secondPart) {
|
|
case 12: cardString << "Ace high";
|
|
break;
|
|
case 11: cardString << "King high";
|
|
break;
|
|
case 10: cardString << "Queen high";
|
|
break;
|
|
case 9: cardString << "Jack high";
|
|
break;
|
|
case 8: cardString << "Ten high";
|
|
break;
|
|
case 7: cardString << "Nine high";
|
|
break;
|
|
case 6: cardString << "Eight high";
|
|
break;
|
|
case 5: cardString << "Seven high";
|
|
break;
|
|
case 4: cardString << "Six high";
|
|
break;
|
|
default: cardString << "ERROR";
|
|
}
|
|
}
|
|
break;
|
|
case 4: {
|
|
cardString << "Straight, ";
|
|
switch(secondPart) {
|
|
case 12: cardString << "Ace high";
|
|
break;
|
|
case 11: cardString << "King high";
|
|
break;
|
|
case 10: cardString << "Queen high";
|
|
break;
|
|
case 9: cardString << "Jack high";
|
|
break;
|
|
case 8: cardString << "Ten high";
|
|
break;
|
|
case 7: cardString << "Nine high";
|
|
break;
|
|
case 6: cardString << "Eight high";
|
|
break;
|
|
case 5: cardString << "Seven high";
|
|
break;
|
|
case 4: cardString << "Six high";
|
|
break;
|
|
case 3: cardString << "Five high";
|
|
break;
|
|
default: cardString << "ERROR";
|
|
}
|
|
}
|
|
break;
|
|
case 3: {
|
|
cardString << "Three of a Kind, ";
|
|
switch(secondPart) {
|
|
case 12: cardString << "Aces";
|
|
break;
|
|
case 11: cardString << "Kings";
|
|
break;
|
|
case 10: cardString << "Queens";
|
|
break;
|
|
case 9: cardString << "Jacks";
|
|
break;
|
|
case 8: cardString << "Tens";
|
|
break;
|
|
case 7: cardString << "Nines";
|
|
break;
|
|
case 6: cardString << "Eights";
|
|
break;
|
|
case 5: cardString << "Sevens";
|
|
break;
|
|
case 4: cardString << "Sixes";
|
|
break;
|
|
case 3: cardString << "Fives";
|
|
break;
|
|
case 2: cardString << "Fours";
|
|
break;
|
|
case 1: cardString << "Threes";
|
|
break;
|
|
case 0: cardString << "Deuces";
|
|
break;
|
|
default: cardString << "ERROR";
|
|
}
|
|
//Kicker 1
|
|
switch(thirdPart) {
|
|
case 12: cardString << ", Ace kicker";
|
|
break;
|
|
case 11: cardString << ", King kicker";
|
|
break;
|
|
case 10: cardString << ", Queen kicker";
|
|
break;
|
|
case 9: cardString << ", Jack kicker";
|
|
break;
|
|
case 8: cardString << ", Ten kicker";
|
|
break;
|
|
case 7: cardString << ", Nine kicker";
|
|
break;
|
|
case 6: cardString << ", Eight kicker";
|
|
break;
|
|
case 5: cardString << ", Seven kicker";
|
|
break;
|
|
case 4: cardString << ", Six kicker";
|
|
break;
|
|
case 3: cardString << ", Five kicker";
|
|
break;
|
|
case 2: cardString << ", Four kicker";
|
|
break;
|
|
case 1: cardString << ", Three kicker";
|
|
break;
|
|
default: cardString << "ERROR";
|
|
}
|
|
//Kicker 2
|
|
switch(fourthPart) {
|
|
case 12: cardString << ", Ace kicker";
|
|
break;
|
|
case 11: cardString << ", King kicker";
|
|
break;
|
|
case 10: cardString << ", Queen kicker";
|
|
break;
|
|
case 9: cardString << ", Jack kicker";
|
|
break;
|
|
case 8: cardString << ", Ten kicker";
|
|
break;
|
|
case 7: cardString << ", Nine kicker";
|
|
break;
|
|
case 6: cardString << ", Eight kicker";
|
|
break;
|
|
case 5: cardString << ", Seven kicker";
|
|
break;
|
|
case 4: cardString << ", Six kicker";
|
|
break;
|
|
case 3: cardString << ", Five kicker";
|
|
break;
|
|
case 2: cardString << ", Four kicker";
|
|
break;
|
|
case 1: cardString << ", Three kicker";
|
|
break;
|
|
default: cardString << "ERROR";
|
|
}
|
|
}
|
|
break;
|
|
case 2: {
|
|
cardString << "Two Pairs, ";
|
|
// erster Pair
|
|
switch(secondPart) {
|
|
case 12: cardString << "Aces and ";
|
|
break;
|
|
case 11: cardString << "Kings and ";
|
|
break;
|
|
case 10: cardString << "Queens and ";
|
|
break;
|
|
case 9: cardString << "Jacks and ";
|
|
break;
|
|
case 8: cardString << "Tens and ";
|
|
break;
|
|
case 7: cardString << "Nines and ";
|
|
break;
|
|
case 6: cardString << "Eights and ";
|
|
break;
|
|
case 5: cardString << "Sevens and ";
|
|
break;
|
|
case 4: cardString << "Sixes and ";
|
|
break;
|
|
case 3: cardString << "Fives and ";
|
|
break;
|
|
case 2: cardString << "Fours and ";
|
|
break;
|
|
case 1: cardString << "Threes and ";
|
|
break;
|
|
case 0: cardString << "Deuces and ";
|
|
break;
|
|
default: cardString << "ERROR";
|
|
}
|
|
// zweiter Pair
|
|
switch(thirdPart) {
|
|
case 12: cardString << "Aces";
|
|
break;
|
|
case 11: cardString << "Kings";
|
|
break;
|
|
case 10: cardString << "Queens";
|
|
break;
|
|
case 9: cardString << "Jacks";
|
|
break;
|
|
case 8: cardString << "Tens";
|
|
break;
|
|
case 7: cardString << "Nines";
|
|
break;
|
|
case 6: cardString << "Eights";
|
|
break;
|
|
case 5: cardString << "Sevens";
|
|
break;
|
|
case 4: cardString << "Sixes";
|
|
break;
|
|
case 3: cardString << "Fives";
|
|
break;
|
|
case 2: cardString << "Fours";
|
|
break;
|
|
case 1: cardString << "Threes";
|
|
break;
|
|
case 0: cardString << "Deuces";
|
|
break;
|
|
default: cardString << "ERROR";
|
|
}
|
|
//Kicker
|
|
switch(fourthPart) {
|
|
case 12: cardString << ", Ace kicker";
|
|
break;
|
|
case 11: cardString << ", King kicker";
|
|
break;
|
|
case 10: cardString << ", Queen kicker";
|
|
break;
|
|
case 9: cardString << ", Jack kicker";
|
|
break;
|
|
case 8: cardString << ", Ten kicker";
|
|
break;
|
|
case 7: cardString << ", Nine kicker";
|
|
break;
|
|
case 6: cardString << ", Eight kicker";
|
|
break;
|
|
case 5: cardString << ", Seven kicker";
|
|
break;
|
|
case 4: cardString << ", Six kicker";
|
|
break;
|
|
case 3: cardString << ", Five kicker";
|
|
break;
|
|
case 2: cardString << ", Four kicker";
|
|
break;
|
|
case 1: cardString << ", Three kicker";
|
|
break;
|
|
default: cardString << "ERROR";
|
|
}
|
|
}
|
|
break;
|
|
case 1: {
|
|
cardString << "Pair, ";
|
|
// Pair
|
|
switch(secondPart) {
|
|
case 12: cardString << "Aces";
|
|
break;
|
|
case 11: cardString << "Kings";
|
|
break;
|
|
case 10: cardString << "Queens";
|
|
break;
|
|
case 9: cardString << "Jacks";
|
|
break;
|
|
case 8: cardString << "Tens";
|
|
break;
|
|
case 7: cardString << "Nines";
|
|
break;
|
|
case 6: cardString << "Eights";
|
|
break;
|
|
case 5: cardString << "Sevens";
|
|
break;
|
|
case 4: cardString << "Sixes";
|
|
break;
|
|
case 3: cardString << "Fives";
|
|
break;
|
|
case 2: cardString << "Fours";
|
|
break;
|
|
case 1: cardString << "Threes";
|
|
break;
|
|
case 0: cardString << "Deuces";
|
|
break;
|
|
default: cardString << "ERROR";
|
|
}
|
|
// Kicker 1
|
|
switch(thirdPart) {
|
|
case 12: cardString << ", Ace kicker";
|
|
break;
|
|
case 11: cardString << ", King kicker";
|
|
break;
|
|
case 10: cardString << ", Queen kicker";
|
|
break;
|
|
case 9: cardString << ", Jack kicker";
|
|
break;
|
|
case 8: cardString << ", Ten kicker";
|
|
break;
|
|
case 7: cardString << ", Nine kicker";
|
|
break;
|
|
case 6: cardString << ", Eight kicker";
|
|
break;
|
|
case 5: cardString << ", Seven kicker";
|
|
break;
|
|
case 4: cardString << ", Six kicker";
|
|
break;
|
|
case 3: cardString << ", Five kicker";
|
|
break;
|
|
case 2: cardString << ", Four kicker";
|
|
break;
|
|
case 1: cardString << ", Three kicker";
|
|
break;
|
|
default: cardString << "ERROR";
|
|
}
|
|
//Kicker 2
|
|
switch(fourthPart) {
|
|
case 12: cardString << ", Ace kicker";
|
|
break;
|
|
case 11: cardString << ", King kicker";
|
|
break;
|
|
case 10: cardString << ", Queen kicker";
|
|
break;
|
|
case 9: cardString << ", Jack kicker";
|
|
break;
|
|
case 8: cardString << ", Ten kicker";
|
|
break;
|
|
case 7: cardString << ", Nine kicker";
|
|
break;
|
|
case 6: cardString << ", Eight kicker";
|
|
break;
|
|
case 5: cardString << ", Seven kicker";
|
|
break;
|
|
case 4: cardString << ", Six kicker";
|
|
break;
|
|
case 3: cardString << ", Five kicker";
|
|
break;
|
|
case 2: cardString << ", Four kicker";
|
|
break;
|
|
case 1: cardString << ", Three kicker";
|
|
break;
|
|
default: cardString << "ERROR";
|
|
}
|
|
//Kicker 3
|
|
switch(fifthPart) {
|
|
case 12: cardString << ", Ace kicker";
|
|
break;
|
|
case 11: cardString << ", King kicker";
|
|
break;
|
|
case 10: cardString << ", Queen kicker";
|
|
break;
|
|
case 9: cardString << ", Jack kicker";
|
|
break;
|
|
case 8: cardString << ", Ten kicker";
|
|
break;
|
|
case 7: cardString << ", Nine kicker";
|
|
break;
|
|
case 6: cardString << ", Eight kicker";
|
|
break;
|
|
case 5: cardString << ", Seven kicker";
|
|
break;
|
|
case 4: cardString << ", Six kicker";
|
|
break;
|
|
case 3: cardString << ", Five kicker";
|
|
break;
|
|
case 2: cardString << ", Four kicker";
|
|
break;
|
|
case 1: cardString << ", Three kicker";
|
|
break;
|
|
default: cardString << "ERROR";
|
|
}
|
|
}
|
|
break;
|
|
case 0: {
|
|
cardString << "Highest Card, ";
|
|
// Kicker 1
|
|
switch(secondPart) {
|
|
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 << "Deuces";
|
|
break;
|
|
default: cardString << "ERROR";
|
|
}
|
|
// Kicker 2
|
|
switch(thirdPart) {
|
|
case 12: cardString << ", Ace kicker";
|
|
break;
|
|
case 11: cardString << ", King kicker";
|
|
break;
|
|
case 10: cardString << ", Queen kicker";
|
|
break;
|
|
case 9: cardString << ", Jack kicker";
|
|
break;
|
|
case 8: cardString << ", Ten kicker";
|
|
break;
|
|
case 7: cardString << ", Nine kicker";
|
|
break;
|
|
case 6: cardString << ", Eight kicker";
|
|
break;
|
|
case 5: cardString << ", Seven kicker";
|
|
break;
|
|
case 4: cardString << ", Six kicker";
|
|
break;
|
|
case 3: cardString << ", Five kicker";
|
|
break;
|
|
case 2: cardString << ", Four kicker";
|
|
break;
|
|
case 1: cardString << ", Three kicker";
|
|
break;
|
|
default: cardString << "ERROR";
|
|
}
|
|
//Kicker 3
|
|
switch(fourthPart) {
|
|
case 12: cardString << ", Ace kicker";
|
|
break;
|
|
case 11: cardString << ", King kicker";
|
|
break;
|
|
case 10: cardString << ", Queen kicker";
|
|
break;
|
|
case 9: cardString << ", Jack kicker";
|
|
break;
|
|
case 8: cardString << ", Ten kicker";
|
|
break;
|
|
case 7: cardString << ", Nine kicker";
|
|
break;
|
|
case 6: cardString << ", Eight kicker";
|
|
break;
|
|
case 5: cardString << ", Seven kicker";
|
|
break;
|
|
case 4: cardString << ", Six kicker";
|
|
break;
|
|
case 3: cardString << ", Five kicker";
|
|
break;
|
|
case 2: cardString << ", Four kicker";
|
|
break;
|
|
case 1: cardString << ", Three kicker";
|
|
break;
|
|
default: cardString << "ERROR";
|
|
}
|
|
//Kicker 4
|
|
switch(fifthPartA) {
|
|
case 9: cardString << ", Jack kicker";
|
|
break;
|
|
case 8: cardString << ", Ten kicker";
|
|
break;
|
|
case 7: cardString << ", Nine kicker";
|
|
break;
|
|
case 6: cardString << ", Eight kicker";
|
|
break;
|
|
case 5: cardString << ", Seven kicker";
|
|
break;
|
|
case 4: cardString << ", Six kicker";
|
|
break;
|
|
case 3: cardString << ", Five kicker";
|
|
break;
|
|
case 2: cardString << ", Four kicker";
|
|
break;
|
|
case 1: cardString << ", Three kicker";
|
|
break;
|
|
default: cardString << "ERROR";
|
|
}
|
|
//Kicker 5
|
|
switch(fifthPartB) {
|
|
case 9: cardString << ", Jack kicker";
|
|
break;
|
|
case 8: cardString << ", Ten kicker";
|
|
break;
|
|
case 7: cardString << ", Nine kicker";
|
|
break;
|
|
case 6: cardString << ", Eight kicker";
|
|
break;
|
|
case 5: cardString << ", Seven kicker";
|
|
break;
|
|
case 4: cardString << ", Six kicker";
|
|
break;
|
|
case 3: cardString << ", Five kicker";
|
|
break;
|
|
case 2: cardString << ", Four kicker";
|
|
break;
|
|
case 1: cardString << ", Three kicker";
|
|
break;
|
|
default: cardString << "ERROR";
|
|
}
|
|
}
|
|
break;
|
|
default: cardString << "ERROR";
|
|
|
|
}
|
|
|
|
|
|
|
|
return cardString;
|
|
|
|
}
|