|
|
|
|
|
|
|
|
player->actionRequired = PlayerActionRequired::Play; |
|
|
player->actionRequired = PlayerActionRequired::Play; |
|
|
nextAction = DealerAction::AskForPlay; |
|
|
nextAction = DealerAction::AskForPlay; |
|
|
|
|
|
|
|
|
// hand.render(hand.holeCardShown); |
|
|
|
|
|
// player->currentHand->render(); |
|
|
|
|
|
|
|
|
|
|
|
std::cout << "dealer upcard is " << card[upCard].utf8() << std::endl; |
|
|
std::cout << "dealer upcard is " << card[upCard].utf8() << std::endl; |
|
|
std::cout << "your total is " << player->currentHand->total() << std::endl; |
|
|
std::cout << "your total is " << player->currentHand->total() << std::endl; |
|
|
std::cout << "play please" << std::endl; |
|
|
std::cout << "play please" << std::endl; |
|
|
|
|
|
|
|
|
} else { |
|
|
} else { |
|
|
std::cout << "card_player " << card[playerCard].utf8() << std::endl; |
|
|
std::cout << "card_player " << card[playerCard].utf8() << std::endl; |
|
|
} |
|
|
} |
|
|
// player->currentHand->render(); |
|
|
|
|
|
|
|
|
|
|
|
if (player->currentHand->total() == 21) { |
|
|
if (player->currentHand->total() == 21) { |
|
|
player->actionRequired = PlayerActionRequired::None; |
|
|
player->actionRequired = PlayerActionRequired::None; |
|
|
|
|
|
|
|
|
std::cout << "card_dealer_hole " << card[holeCard].utf8() << std::endl; |
|
|
std::cout << "card_dealer_hole " << card[holeCard].utf8() << std::endl; |
|
|
hand.holeCardShown = true; |
|
|
hand.holeCardShown = true; |
|
|
std::cout << "dealer_hand" << std::endl; |
|
|
std::cout << "dealer_hand" << std::endl; |
|
|
// hand.render(hand.holeCardShown); |
|
|
|
|
|
|
|
|
|
|
|
// TODO: no tengo que sacarle todo el dinero? |
|
|
// TODO: no tengo que sacarle todo el dinero? |
|
|
|
|
|
|
|
|
player->actionRequired = PlayerActionRequired::None; |
|
|
player->actionRequired = PlayerActionRequired::None; |
|
|
|
|
|
|
|
|
std::cout << "card_dealer_hole" << card[holeCard].utf8() << std::endl; |
|
|
std::cout << "card_dealer_hole" << card[holeCard].utf8() << std::endl; |
|
|
hand.holeCardShown = true; |
|
|
hand.holeCardShown = true; |
|
|
|
|
|
|
|
|
// hand.render(hand.holeCardShown); |
|
|
|
|
|
|
|
|
|
|
|
// TODO: print "soft" |
|
|
// TODO: print "soft" |
|
|
std::cout << "dealer_count " << hand.total() << std::endl; |
|
|
std::cout << "dealer_count " << hand.total() << std::endl; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
while (((abs(dealerTotal) < 17 || (hit_soft_17 && dealerTotal == -17))) && hand.busted() == 0) { |
|
|
while (((abs(dealerTotal) < 17 || (hit_soft_17 && dealerTotal == -17))) && hand.busted() == 0) { |
|
|
unsigned int dealerCard = drawCard(&hand); |
|
|
unsigned int dealerCard = drawCard(&hand); |
|
|
std::cout << "card_dealer " << card[dealerCard].utf8() << std::endl; |
|
|
std::cout << "card_dealer " << card[dealerCard].utf8() << std::endl; |
|
|
// hand.render(hand.holeCardShown); |
|
|
|
|
|
|
|
|
|
|
|
dealerTotal = abs(hand.total()); |
|
|
dealerTotal = abs(hand.total()); |
|
|
std::cout << "dealer_count " << dealerTotal << std::endl; |
|
|
std::cout << "dealer_count " << dealerTotal << std::endl; |
|
|
|
|
|
|
|
|
return 0; |
|
|
return 0; |
|
|
break; |
|
|
break; |
|
|
case PlayerActionTaken::Table: |
|
|
case PlayerActionTaken::Table: |
|
|
hand.render(hand.holeCardShown); |
|
|
|
|
|
for (auto playerHand : player->hands) { |
|
|
|
|
|
playerHand.render(); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
std::cout << "TODO" << std::endl; |
|
|
return 0; |
|
|
return 0; |
|
|
break; |
|
|
break; |
|
|
case PlayerActionTaken::None: |
|
|
case PlayerActionTaken::None: |
|
|
|
|
|
|
|
|
playerCard = drawCard(&(*player->currentHand)); |
|
|
playerCard = drawCard(&(*player->currentHand)); |
|
|
unsigned int playerTotal = player->currentHand->total(); |
|
|
unsigned int playerTotal = player->currentHand->total(); |
|
|
std::cout << "card_player" << card[playerCard].utf8() << std::endl; |
|
|
std::cout << "card_player" << card[playerCard].utf8() << std::endl; |
|
|
player->currentHand->render(); |
|
|
|
|
|
|
|
|
|
|
|
std::cout << "player_total " << playerTotal << std::endl; |
|
|
std::cout << "player_total " << playerTotal << std::endl; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// deal a card to the first hand |
|
|
// deal a card to the first hand |
|
|
playerCard = drawCard(&(*player->currentHand)); |
|
|
playerCard = drawCard(&(*player->currentHand)); |
|
|
std::cout << "card_player_second " << card[playerCard].utf8() << std::endl; |
|
|
std::cout << "card_player_second " << card[playerCard].utf8() << std::endl; |
|
|
player->currentHand->render(); |
|
|
|
|
|
|
|
|
|
|
|
// aces get dealt only one card |
|
|
// aces get dealt only one card |
|
|
// also, if the player gets 21 then we move on to the next hand |
|
|
// also, if the player gets 21 then we move on to the next hand |
|
|
|
|
|
|
|
|
if (++player->currentHand != player->hands.end()) { |
|
|
if (++player->currentHand != player->hands.end()) { |
|
|
playerCard = drawCard(&(*player->currentHand)); |
|
|
playerCard = drawCard(&(*player->currentHand)); |
|
|
std::cout << "card_player_second " << card[playerCard].utf8() << std::endl; |
|
|
std::cout << "card_player_second " << card[playerCard].utf8() << std::endl; |
|
|
player->currentHand->render(); |
|
|
|
|
|
|
|
|
|
|
|
// if the player got an ace or 21 again, we are done |
|
|
// if the player got an ace or 21 again, we are done |
|
|
if (card[*player->currentHand->cards.begin()].value == 11 || abs(player->currentHand->total()) == 21) { |
|
|
if (card[*player->currentHand->cards.begin()].value == 11 || abs(player->currentHand->total()) == 21) { |
|
|
|
|
|
|
|
|
///ip+hit+detail This command can be abbreviated as `h`. |
|
|
///ip+hit+detail This command can be abbreviated as `h`. |
|
|
playerCard = drawCard(&(*player->currentHand)); |
|
|
playerCard = drawCard(&(*player->currentHand)); |
|
|
std::cout << "card_player " << card[playerCard].utf8() << std::endl; |
|
|
std::cout << "card_player " << card[playerCard].utf8() << std::endl; |
|
|
player->currentHand->render(); |
|
|
|
|
|
|
|
|
|
|
|
if (player->currentHand->busted()) { |
|
|
if (player->currentHand->busted()) { |
|
|
std::cout << "busted_player " << player->currentHand->total() << std::endl; |
|
|
std::cout << "busted_player " << player->currentHand->total() << std::endl; |