Embaralhamento e distribuição de cartas. Use as
funções do Exercício 18.11 para escrever um programa
que lide com duas mãos de pôquer com cinco cartas,
avalie cada uma e determine qual é a melhor.
Passo 1
Vamos criar um programa que vai simular um jogo onde damos 2 mãos de 5 cartas e comparamos as mãos. Para avaliar as mãos, vamos criar a funçãovaluHand().
A função utilizará as funções da tarefa anterior (funções de combinação) para avaliar as mãos. Ele retornará um valor mais alto para uma combinação maior.
int evaluateHand(const vector
{
if (hasFourOfAKind(hand))
return 6;
if (hasFlush(hand))
return 5;
if (hasStraight(hand))
return 4;
if (hasThreeOfAKind(hand))
return 3;
if (hasTwoPairs(hand))
return 2;
if (hasPair(hand))
return 1;
return 0;
}
Passo 2
Na função principal, crie duas mãos (de preferência vetores) e um baralho. Embaralhe o baralho antes de usá-lo.
int main()
{
vector
DeckOfCards deck;
deck.shuffle();
...
}
Então, itere 5 vezes, empurrando (entregando) cartas para as mãos do jogador:
int main()
{
...
for (int i = 0; i
{
player1.push_back(deck.dealCard());
player2.push_back(deck.dealCard());
}
...
}
Passo 3
Por fim, compare o valor das mãos utilizando a funçãovaluHand() da seguinte forma:
int main()
{
...
int val = evaluateHand(player1)
- evaluateHand(player2);
if (val > 0)
cout
else if (val
cout
else
cout
}
Resposta
Ver o desenvolvimento.