Exemple #1
0
int main( 	int argc,
			char** argv)
{
	// Initialise the C-library random mechanism by seeding it with the current time
	// See http://www.cplusplus.com/reference/clibrary/cstdlib/srand/
	std::srand( std::time( NULL));

	// For more info on exception handling: http://www.cplusplus.com/doc/tutorial/exceptions/
	// and http://www.parashift.com/c++-faq/exceptions.html
	try
	{
		GameContext game1("1");
		boost::thread table1([&game1] {game1.play();});

		GameContext game2("2");
		boost::thread table2([&game2] {game2.play();});

		GameContext game3("3");
		boost::thread table3([&game3] {game3.play();});


		table1.join();
		table2.join();
		table3.join();
	}
	catch (std::exception& e)
	{
		std::cout << "Exception caught: " << e.what() << std::endl;
	}
	catch (...)
	{
		std::cout << "Unknown exception caught: " << std::endl;
	}
	return 0;
}
Exemple #2
0
bool PokerTest::fourOfKindTest()
{
   bool status = true;
   std::cout << "four of kind test" << std::endl;

   Hand hand1(Card(Rank::TEN,    Suit::CLUB),
              Card(Rank::TEN,    Suit::DIAMOND),
              Card(Rank::TEN,    Suit::HEART),
              Card(Rank::TEN,    Suit::SPADE),
              Card(Rank::QUEEN,  Suit::DIAMOND));
   Hand hand2(Card(Rank::SIX,    Suit::DIAMOND),
              Card(Rank::SIX,    Suit::HEART),
              Card(Rank::SIX,    Suit::SPADE),
              Card(Rank::SIX,    Suit::CLUB),
              Card(Rank::SEVEN,  Suit::SPADE));
   PokerGame game1(hand1, hand2);
   std::cout << game1;
   if (game1.hasWinner())
   {
      if (game1.getWinner() != hand1)
      {
         std::cerr << "incorrect hand won" << std::endl;
         status = false;
      }
   }
   else
   {
      std::cerr << "hand failed to determine winner" << std::endl;
      status = false;
   }

   Hand hand3(Card(Rank::TEN,    Suit::CLUB),
              Card(Rank::TEN,    Suit::DIAMOND),
              Card(Rank::TEN,    Suit::HEART),
              Card(Rank::TEN,    Suit::SPADE),
              Card(Rank::FIVE,   Suit::CLUB));
   Hand hand4(Card(Rank::TEN,    Suit::CLUB),
              Card(Rank::TEN,    Suit::DIAMOND),
              Card(Rank::TEN,    Suit::HEART),
              Card(Rank::TEN,    Suit::SPADE),
              Card(Rank::TWO,    Suit::DIAMOND));
   PokerGame game2(hand3, hand4);
   std::cout << game2;
   if (game2.hasWinner())
   {
      if (game2.getWinner() != hand3)
      {
         std::cerr << "incorrect hand won" << std::endl;
         status = false;
      }
   }
   else
   {
      std::cerr << "hand failed to determine winner" << std::endl;
      status = false;
   }

   return status;
}
Exemple #3
0
bool PokerTest::fullHouseTest()
{
   bool status = true;
   std::cout << "full house test" << std::endl;

   Hand hand1(Card(Rank::TEN,    Suit::SPADE),
              Card(Rank::TEN,    Suit::HEART),
              Card(Rank::TEN,    Suit::DIAMOND),
              Card(Rank::FOUR,   Suit::SPADE),
              Card(Rank::FOUR,   Suit::DIAMOND));
   Hand hand2(Card(Rank::NINE,   Suit::HEART),
              Card(Rank::NINE,   Suit::CLUB),
              Card(Rank::NINE,   Suit::SPADE),
              Card(Rank::ACE,    Suit::HEART),
              Card(Rank::ACE,    Suit::CLUB));
   PokerGame game1(hand1, hand2);
   std::cout << game1;
   if (game1.hasWinner())
   {
      if (game1.getWinner() != hand1)
      {
         std::cerr << "incorrect hand won" << std::endl;
         status = false;
      }
   }
   else
   {
      std::cerr << "hand failed to determine winner" << std::endl;
      status = false;
   }

   Hand hand3(Card(Rank::ACE,    Suit::SPADE),
              Card(Rank::ACE,    Suit::CLUB),
              Card(Rank::ACE,    Suit::HEART),
              Card(Rank::FOUR,   Suit::DIAMOND),
              Card(Rank::FOUR,   Suit::CLUB));
   Hand hand4(Card(Rank::ACE,    Suit::SPADE),
              Card(Rank::ACE,    Suit::HEART),
              Card(Rank::ACE,    Suit::DIAMOND),
              Card(Rank::THREE,  Suit::SPADE),
              Card(Rank::THREE,  Suit::DIAMOND));
   PokerGame game2(hand3, hand4);
   std::cout << game2;
   if (game2.hasWinner())
   {
      if (game2.getWinner() != hand3)
      {
         std::cerr << "incorrect hand won" << std::endl;
         status = false;
      }
   }
   else
   {
      std::cerr << "hand failed to determine winner" << std::endl;
      status = false;
   }

   return status;
}
Exemple #4
0
bool PokerTest::straightFlushTest()
{
   bool status = true;
   std::cout << "straight flush test" << std::endl;

   Hand hand1(Card(Rank::EIGHT,  Suit::HEART),
              Card(Rank::SEVEN,  Suit::HEART),
              Card(Rank::SIX,    Suit::HEART),
              Card(Rank::FIVE,   Suit::HEART),
              Card(Rank::FOUR,   Suit::HEART));
   Hand hand2(Card(Rank::SIX,    Suit::SPADE),
              Card(Rank::FIVE,   Suit::SPADE),
              Card(Rank::FOUR,   Suit::SPADE),
              Card(Rank::THREE,  Suit::SPADE),
              Card(Rank::TWO,    Suit::SPADE));
   PokerGame game1(hand1, hand2);
   std::cout << game1;
   if (game1.hasWinner())
   {
      if (game1.getWinner() != hand1)
      {
         std::cerr << "incorrect hand won" << std::endl;
         status = false;
      }
   }
   else
   {
      std::cerr << "hand failed to determine winner" << std::endl;
      status = false;
   }

   Hand hand3(Card(Rank::JACK,   Suit::CLUB),
              Card(Rank::TEN,    Suit::CLUB),
              Card(Rank::NINE,   Suit::CLUB),
              Card(Rank::EIGHT,  Suit::CLUB),
              Card(Rank::SEVEN,  Suit::CLUB));
   Hand hand4(Card(Rank::JACK,   Suit::DIAMOND),
              Card(Rank::TEN,    Suit::DIAMOND),
              Card(Rank::NINE,   Suit::DIAMOND),
              Card(Rank::EIGHT,  Suit::DIAMOND),
              Card(Rank::SEVEN,  Suit::DIAMOND));
   PokerGame game2(hand3, hand4);
   std::cout << game2;
   if (game2.hasWinner())
   {
      std::cerr << "hand failed to determine tie" << std::endl;
      status = false;
   }

   return status;
}
Exemple #5
0
bool PokerTest::twoPairTest()
{
   bool status = true;
   std::cout << "two pair test" << std::endl;

   Hand hand1(Card(Rank::KING,   Suit::HEART),
              Card(Rank::KING,   Suit::DIAMOND),
              Card(Rank::TWO,    Suit::CLUB),
              Card(Rank::TWO,    Suit::DIAMOND),
              Card(Rank::JACK,   Suit::HEART));
   Hand hand2(Card(Rank::JACK,   Suit::DIAMOND),
              Card(Rank::JACK,   Suit::SPADE),
              Card(Rank::TEN,    Suit::SPADE),
              Card(Rank::TEN,    Suit::CLUB),
              Card(Rank::NINE,   Suit::SPADE));
   PokerGame game1(hand1, hand2);
   std::cout << game1;
   if (game1.hasWinner())
   {
      if (game1.getWinner() != hand1)
      {
         std::cerr << "incorrect hand won" << std::endl;
         status = false;
      }
   }
   else
   {
      std::cerr << "hand failed to determine winner" << std::endl;
      status = false;
   }

   Hand hand3(Card(Rank::NINE,   Suit::CLUB),
              Card(Rank::NINE,   Suit::DIAMOND),
              Card(Rank::SEVEN,  Suit::DIAMOND),
              Card(Rank::SEVEN,  Suit::SPADE),
              Card(Rank::SIX,    Suit::HEART));
   Hand hand4(Card(Rank::NINE,   Suit::HEART),
              Card(Rank::NINE,   Suit::SPADE),
              Card(Rank::FIVE,   Suit::HEART),
              Card(Rank::FIVE,   Suit::DIAMOND),
              Card(Rank::KING,   Suit::CLUB));
   PokerGame game2(hand3, hand4);
   std::cout << game2;
   if (game2.hasWinner())
   {
      if (game2.getWinner() != hand3)
      {
         std::cerr << "incorrect hand won" << std::endl;
         status = false;
      }
   }
   else
   {
      std::cerr << "hand failed to determine winner" << std::endl;
      status = false;
   }

   Hand hand5(Card(Rank::FOUR,   Suit::SPADE),
              Card(Rank::FOUR,   Suit::CLUB),
              Card(Rank::THREE,  Suit::SPADE),
              Card(Rank::THREE,  Suit::HEART),
              Card(Rank::KING,   Suit::DIAMOND));
   Hand hand6(Card(Rank::FOUR,   Suit::HEART),
              Card(Rank::FOUR,   Suit::DIAMOND),
              Card(Rank::THREE,  Suit::DIAMOND),
              Card(Rank::THREE,  Suit::CLUB),
              Card(Rank::TEN,    Suit::SPADE));
   PokerGame game3(hand5, hand6);
   std::cout << game3;
   if (game3.hasWinner())
   {
      if (game3.getWinner() != hand5)
      {
         std::cerr << "incorrect hand won" << std::endl;
         status = false;
      }
   }
   else
   {
      std::cerr << "hand failed to determine winner" << std::endl;
      status = false;
   }

   return status;
}