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
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.