Ejemplo n.º 1
0
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();
}
Ejemplo n.º 2
0
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;
}
Ejemplo n.º 3
0
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;
}
Ejemplo n.º 4
0
 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;
 }