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& hand)

{

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 player1, player2;

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.