void StateNode::printInfo() { cout<<" Node\t: "<<getState()->getHash()<< ((getState()->getHash().length()<8)?"\t\t\t":"") << "; expandValue\t: "<<getExpandValue()<< "; recValue\t: "<<getRecursiveValue()<< "; childValue\t: "<<getChildrenValue()<< "; childNum\t: "<<getChildrenNum()<< "; level\t:"<<getLevel()<< "; player\t: "<<getNextPlayer()<< ";\n"; cout.flush(); }
bool Round::moneyIsDistributed(){ Player* player = getCurrentPlayer(); if (player->getBet() == 0 && player == active_players.back() ) { // last player already got his money this->roundOver = true; // round is now over; return true; } else if (player->getBet() == 0) { // player already got his money player = getNextPlayer(); } int player_score = player->getHand()->getTotal(); int dealer_score = this->dealer->getHand()->getTotal(); int player_status = player->getStatus(); int dealer_status = this->dealer->getStatus(); float player_bet = player->getBet(); if (player_status == 6 && dealer_status != 4) { // player has doubled and has blackjack AND dealer did not blackjack player->updateBalance(player_bet*2*2*1.5); } else if (player_status == 4 && (dealer_status != 5 && dealer_score < player_score) ) { // player has doubled AND dealer is not bust AND dealer has lesser score player->updateBalance(player_bet*2*2); } else if (player_status == 5 && (dealer_status != 5 && dealer_score < player_score) ) { // player has blackjack AND dealer is not bust AND dealer has lesser score player->updateBalance(player_bet*2*1.5); } else if ( (player_status != 3 && player_score > dealer_score ) || (player_status != 3 && dealer_status == 5) ){ // player isnt bust AND player has better hand OR player inst bust AND dealer is bust player->updateBalance(player_bet*2); } else if ( player_status == 3 || ( dealer_score > player_score && dealer_status != 5) ){ // player is bust OR dealer has better hand AND dealer isnt bust player->updateBalance(0); } else if ( player_score == dealer_score ){ // player hand equals dealers hand player->updateBalance(player_bet); } return false; }
bool Round::allPlayersHaveBetted(){ Player* player_betting = getCurrentPlayer(); if (player_betting == active_players.back() && player_betting->getBet() > 0){ current_player = active_players.begin(); return true; } else if (player_betting->getBet() > 0) { // current player already betted getNextPlayer(); return false; } else return false; }
bool Game::nextTurn() { bool ret(true); // find next player GameData::PlayerID nextPlayer(getNextPlayer(mCurrentPlayerID)); if (SIZE_MAX != nextPlayer) { // update current player mCurrentPlayerID = nextPlayer; mGameData.currentPlayer = mPlayers[mCurrentPlayerID]->name(); // tell everyone current state of game sendUpdatesToEveryone(); // get input from current player InputData input(mPlayers[mCurrentPlayerID]->getInput(InputData::NEED_GUESS)); // determine if guess is correct if (input.guess < mSecretNumber) { ret = false; mGameData.lastGuess = GameData::LAST_GUESS_LOW; } else if (input.guess > mSecretNumber) { ret = false; mGameData.lastGuess = GameData::LAST_GUESS_HIGH; } else { mGameData.lastGuess = GameData::LAST_GUESS_CORRECT; // let everyone know who won sendUpdatesToEveryone(); } mGameData.guesses.push_back(input.guess); } return ret; }