Embaralhamento e distribuição de cartas. Modifique o programa que você desenvolveu no Exercício 18.13 para que ele trate da mão do carteador, mas de maneira que o jogador possa decidir quais cartas de sua mão deverão ser substituídas. O programa deverá, então, avaliar as

duas mãos e determinar quem ganhará. Agora, use esse novo programa para jogar 20 partidas contra o computador. Quem ganha mais partidas, você ou o computador? Peça a um de seus amigos que jogue 20 partidas contra o computador. Quem ganha mais partidas? Com base nos

resultados dessas partidas, faça as modificações apropriadas para refinar o programa de pôquer. Jogue mais 20 partidas. Seu programa modificado funciona melhor?

Passo 1

Vamos expandir o exercício anterior de forma a adicionar mais uma mão de cartas que serão controladas pelo jogador (usuário).

Em primeiro lugar, atribua os cartões:

int main()

{

vector dealer, player;

DeckOfCards deck;

deck.shuffle();

for (int i = 0; i deck.moreCards(); i++)

{

dealer.push_back(deck.dealCard());

player.push_back(deck.dealCard());

}

...

}

Exibir as cartas do jogador:

int main()

{

...

cout Welcome to the 18.14 card game!" endl;

cout nYour cards:" endl;

for (int i = 0; i

cout

).toString() endl;

...

}

Passo 2

Deixe o jogador inserir as cartas que deseja remover:

int main()

{

...

int n = -1;

cout How many cards do you wish to remove?: ";

while (!(0

cin >> n;

vectorint> indexes;

cout Enter card indexes:" endl;

for (int i = 0; i

{

int j = -1;

while (!(0

cin >> j;

indexes.push_back(j);

}

...

}

Remova os cartões que o usuário deseja remover e substitua-os por novos cartões:

int main()

{

...

for (int index : indexes)

{

player.erase(player.begin() + index);

if (deck.moreCards())

player.push_back(deck.dealCard());

else

return 1;

}

...

}

Chame a função replaceUnneededCards() do exercício anterior para tomar a decisão de quais cartas substituir para o dealer:

int main()

{

...

replaceUnneededCards(dealer, deck);

...

}

Passo 3

Por fim, exiba os resultados:

int main()

{

...

int playerVal = evaluateHand(player);

int dealerVal = evaluateHand(dealer);

cout nDealer hand value: " dealerVal endl;

for (int i = 0; i

cout ).toString() endl;

cout nPlayer hand value: " playerVal endl;

for (int i = 0; i

cout ).toString() endl;

int dif = dealerVal - playerVal;

if (dif > 0)

cout nDealer wins!" endl;

else if (dif

cout nPlayer wins!" endl;

else

cout nTie!" endl;

}

Resposta

Ver desenvolvimento.