A
A_StClaire_
hi,
I have a singleton Evaluation class that I'm calling repeatedly in one
sequence. would someone plz have a look at the code below and tell me
if one instance of the singleton can ever "clash" with another?
I'm asking because I'm getting unexpected results. I've looked for the
problem the past several days and can't attribute the anomalies to
logic errors.
the Evaluate function uses private vectors and other internal class
members to return an int value corresponding to poker hand strength.
void Game::RunShowdown()
{
deque<Player> showDownPlayers;
for(posPlayer = players.begin(); posPlayer != players.end();
++posPlayer)
{
if((*posPlayer).GetActive()) showDownPlayers.push_back(*posPlayer);
}
ShowChipsStatus();
ShowRiver();
for(posPlayer = showDownPlayers.begin(); posPlayer !=
showDownPlayers.end(); ++posPlayer)
{
cout << "\n " << (*posPlayer).GetLastName() << "'s hand:\n\n\n";
(*posPlayer).GetHand().Peek();
}
Player winner = showDownPlayers.front();
for(posPlayer = showDownPlayers.begin() + 1; posPlayer !=
showDownPlayers.end(); ++posPlayer)
{
if(Evaluation::Instance().Evaluate(ReturnCommunityCards(),
(*posPlayer).GetHand()) >
Evaluation::Instance().Evaluate(ReturnCommunityCards(),
winner.GetHand())) winner = (*posPlayer);
else if(Evaluation::Instance().Evaluate(ReturnCommunityCards(),
(*posPlayer).GetHand()) ==
Evaluation::Instance().Evaluate(ReturnCommunityCards(),
winner.GetHand()))
{
if((*posPlayer).GetHand().GetTopCard().GetValue() >
winner.GetHand().GetTopCard().GetValue())
winner = (*posPlayer);
else if((*posPlayer).GetHand().GetTopCard().GetValue() ==
winner.GetHand().GetTopCard().GetValue())
{
if((*posPlayer).GetHand().GetLowPairValue() >
winner.GetHand().GetLowPairValue())
winner = (*posPlayer);
else if((*posPlayer).GetHand().GetLowPairValue() ==
winner.GetHand().GetLowPairValue())
{
if((*posPlayer).GetHand().GetKicker().GetValue() >
winner.GetHand().GetKicker().GetValue())
winner = (*posPlayer);
}
}
}
PayWinner(winner);
}
I have a singleton Evaluation class that I'm calling repeatedly in one
sequence. would someone plz have a look at the code below and tell me
if one instance of the singleton can ever "clash" with another?
I'm asking because I'm getting unexpected results. I've looked for the
problem the past several days and can't attribute the anomalies to
logic errors.
the Evaluate function uses private vectors and other internal class
members to return an int value corresponding to poker hand strength.
void Game::RunShowdown()
{
deque<Player> showDownPlayers;
for(posPlayer = players.begin(); posPlayer != players.end();
++posPlayer)
{
if((*posPlayer).GetActive()) showDownPlayers.push_back(*posPlayer);
}
ShowChipsStatus();
ShowRiver();
for(posPlayer = showDownPlayers.begin(); posPlayer !=
showDownPlayers.end(); ++posPlayer)
{
cout << "\n " << (*posPlayer).GetLastName() << "'s hand:\n\n\n";
(*posPlayer).GetHand().Peek();
}
Player winner = showDownPlayers.front();
for(posPlayer = showDownPlayers.begin() + 1; posPlayer !=
showDownPlayers.end(); ++posPlayer)
{
if(Evaluation::Instance().Evaluate(ReturnCommunityCards(),
(*posPlayer).GetHand()) >
Evaluation::Instance().Evaluate(ReturnCommunityCards(),
winner.GetHand())) winner = (*posPlayer);
else if(Evaluation::Instance().Evaluate(ReturnCommunityCards(),
(*posPlayer).GetHand()) ==
Evaluation::Instance().Evaluate(ReturnCommunityCards(),
winner.GetHand()))
{
if((*posPlayer).GetHand().GetTopCard().GetValue() >
winner.GetHand().GetTopCard().GetValue())
winner = (*posPlayer);
else if((*posPlayer).GetHand().GetTopCard().GetValue() ==
winner.GetHand().GetTopCard().GetValue())
{
if((*posPlayer).GetHand().GetLowPairValue() >
winner.GetHand().GetLowPairValue())
winner = (*posPlayer);
else if((*posPlayer).GetHand().GetLowPairValue() ==
winner.GetHand().GetLowPairValue())
{
if((*posPlayer).GetHand().GetKicker().GetValue() >
winner.GetHand().GetKicker().GetValue())
winner = (*posPlayer);
}
}
}
PayWinner(winner);
}