#include "StrategySkeleton.h" #include #include size_t Context::_pot; // shared by all players size_t Context::_bet; // shared by all players void announceWinner(Player* players[], size_t numPlayers) { size_t winner; size_t handValue = 0; for(size_t i=0; ihandValue() > handValue) { if(players[i]->folded()) continue; winner = i; handValue = players[i]->handValue(); } } std::cout << "\n winner is " << players[winner]->name(); players[winner]->stake() += Context::pot(); Context::pot() = 0; for(size_t i=0; ifolded() = false; } void main() { Player Jim("Jim", 100); Player Shaoyuan("Shaoyuan", 130); Player Ashwin("Ashwin", 200); const size_t numPlayers = 3; Player* Players[numPlayers] = { &Jim, &Shaoyuan, &Ashwin }; size_t round = 0; //size_t bump; while(true) { std::cout << "\n round #" << ++round; for(size_t i=0; iname() << "'s stake is " << Players[i]->stake(); } std::cout << "\n"; for(size_t i=0; ifolded()) continue; Players[i]->dealCards(); std::cout << "\n " << Players[i]->name() << " was dealt hand with value " << Players[i]->handValue(); } std::cout << "\n"; size_t previousBet; size_t foldCount = 0; size_t stayCount = 0; Context::bet() = 2; std::cout << "\n ante is " << Context::bet(); for(size_t i=0; i<3; ++i) { if(Players[i]->folded()) continue; previousBet = Context::bet(); std::cout << "\n " << Players[i]->name(); Strategy::action act = Players[i]->playHand(); if(act == Strategy::fold) { std::cout << " folds"; Players[i]->folded() = true; ++foldCount; if(foldCount + stayCount >= numPlayers-1) { announceWinner(Players, numPlayers); break; } } else if(act == Strategy::stay) { std::cout << " stays, bet is " << Context::bet() << ", pot value is " << Context::pot(); if(foldCount + stayCount >= numPlayers-1) { announceWinner(Players, numPlayers); break; } ++stayCount; } else if(act == Strategy::raise) { if(foldCount + stayCount >= numPlayers-1) { announceWinner(Players, numPlayers); break; } else std::cout << " raises, bet is " << Context::bet() << ", pot value is " << Context::pot(); } } char ch; std::cout << "\n press key to continue (s to stop):\n"; std::cin >> ch; } }