Declaramos alguns protótipos de função que serão usados no código em uma sequência.
Definiu algumas variáveis globais e o método principal (). As funções "regras ()", "dificuldade ()" e "playonehand ()" serão chamadas uma após a outra. Vamos ver como essas funções funcionam.
O método "regras ()" não tem nada a retornar porque demonstra as regras do jogo, as regras do ponto de vitória e os níveis de dificuldade para a facilidade do jogador usando as cláusulas "cout".
O método "Dificuldade ()" executa obtém o nível de dificuldade de um usuário quando ele/ela entra 1 ou 2. As declarações "se" são usadas para verificar se um usuário inseriu 1 ou 2 ou não. Caso contrário, o buffer será limpo, e essa função "dificuldade" será chamada novamente para entrar no nível de dificuldade.
Depois que o usuário insere seu nível de dificuldade, a função "playonehand" foi executada. Ele declarou uma variável local "play" é igual a "n" e depois uma variável "desenho" na declaração "do". A matriz "deck" do tamanho 52 é declarada. A função "Initializedeck" é chamada para inicializar o "deck" e a função "shuffle" é usada para embaralhar o baralho. Depois disso, inicializamos duas listas, "ph" e "dh". O "pH" significa as mãos do jogador enquanto o "DH" significa a mão do revendedor.
Chamamos a função "AddToHand" ao passar a função "gettopcard" e matrizes "ph" ou "dh" em ordem aleatória. Na função "gettopcard ()", também passamos a matriz "Deck" como um argumento de parâmetro. As declarações cout mostram que o Shuffling foi feito. A função "Naturalblackjack" e a função "Blackjack" são chamadas com 3 parâmetros, i i.e., ph, dh, y ou y. A função "ShowCards ()" é chamada 2 vezes para mostrar as cartas na mão do jogador e do revendedor. A função "checksoftorhard" é chamada para alterar o valor de um cartão ACE por um usuário. Enquanto a função "userwantstodraw" é chamada, estaremos executando algumas ações.
Enquanto Loop está chamando addToHand (), ShowCards (), CheckSoftorhard (), CheckBust () e Blackjack () Função. Os hituntilstands (), checkBust (), Blackjack (), Whowins () função estão do lado de fora para verificar a vitória, a perda e exibi -la. Enquanto o "playanotherhand" é chamado para jogar mais uma vez se desejado.
A função “Initializedeck” é usada para construir os valores dos fundos dos cartões para definir a classificação na posição dos 10s e o processo na posição dos anos 100s. Você pode ver, usamos o loop for para corações, diamantes, clubes e espadas separadamente.
Aí vem o método "Shuffle", que está sendo usado para reorganizar os cartões aleatoriamente. Isso foi feito com um enorme loop e os clones de cartas foram feitos. Ele continuará a funcionar até que o loop termine e todas as cartas sejam arrasadas.
Chamamos essa função no parâmetro de função "addToHand", então discuta -o primeiro. Então, ele está pegando a matriz "Deck" em seu parâmetro e loop todas as suas cartas até o último. Ele descobrirá o cartão específico do baralho que não está vazio e fará uma cópia dele primeiro. Em seguida, isso o tornará vazio substituindo e retornando o valor copiado, eu.e., A variável "Topcard", para a função "AddToHand".
Agora, a função "AddToHand" leva a "Topcard" retornada da função "GettopCard", e a matriz "Hand []" que foi passada para ela é a mão "dh" ou a mão do jogador "pH". Se a mão tiver um ponto vazio para o cartão, ele substituirá esse ponto pelo valor "CardToadd" retornado do valor "getTopcard".
Esta função receberá as pontuações de jogadores e revendedores usando pH e DH. Está verificando se o jogador tem um blackjack ou não. Nesse caso, ele chamará a função "placar", calcule a vitória, chame a função "backdoorkenny" e depois a função "playanotherhand".
A função "Blackjack" verificará se o jogador tem um blackjack ou o jogador e um revendedor tem um blackjack. Se um jogador tiver blackjack, ele chamará o "placar", "backdoorkenny" e "playanhotherhand" enquanto calcula os ganhos. Se ambos tiverem blackjack, ele chamará a função "placar" e "playanotherhand" enquanto calcula os ganhos.
Os "Showcards" são sobre mostrar os valores da carta no terminal, enquanto o baralho não está vazio para jogadores e revendedores.
A função "checksoftorhard" será executada para perguntar a um usuário se ele deseja que o Ace seja contado como 1 ou 11. Com isso, calcularemos outras pontuações ou cartões.
A chamada "Userwantstodraw" pede ao usuário que desenhe outra carta ou pule o loop. Se o usuário entrar "H" ou "H", significa tocar mais uma vez, ou será ignorado.
A função "Checkbust" é chamada quando um jogador ou um revendedor encontra uma pontuação de 21.
Esta função “Hituntilstand” será utilizada para deixar um revendedor atingir enquanto recebe 17. Seria decodificado em níveis iniciantes ou de especialistas,
A função "Softorhardai" foi chamada aqui para jogar com sabedoria.
Aí vem a função “GethandValue ()” para somar os valores do cartão, obtendo os valores da função “CardValue” e retornando o atualizado.
Aí vem a função "CardValue", que verifica o fundo de um cartão para obter o valor dos 10s. Isso pode ser chamado para qualquer cartão, e será chamado muitas vezes neste código.
A função "placar" leva o pH e o DH para exibir os cartões atuais do jogador e revendedor usando o "ShowCards ()" e exibir o valor do cartão usando a função "GethandValue".
Quando um usuário tem 1 cartão de 10 pontos enquanto a segunda carta é "ACE", usando a função "CardValue", ele calculará sua vitória como um pagamento de 1: 4.
Esta função é chamada quando queremos saber sobre a classificação do cartão atual e seu processo.
As fileiras são verificadas com a declaração "Switch" e os ternos são verificados por meio de declarações if-else.
O método "Dumpdeck" será chamado para exibir os valores do deck.
O "getRandomNumber" foi utilizado no programa para obter qualquer número dos valores altos e baixos fornecidos.
Esta função tem tudo a ver com lógica para verificar se o revendedor tem um "ás" ou não. Nesse caso, o revendedor tentará criar 21 e vencer.
A função "whowins ()" será chamada para decidir o vencedor usando suas pontuações.
A função playanotherHand () é chamada para solicitar ao usuário se ele quiser jogar mais uma vez depois de um jogo inteiro.
A compilação é realizada usando o compilador "G ++".
A execução mostra o painel do Blackjack. Então, aqui está.
Conclusão:
Este artigo é um pacote completo de um código C ++ para criar um jogo de blackjack no Ubuntu 20.04. Utilizamos mais de 20 funções definidas pelo usuário para alcançar sua funcionalidade. Todas as funções são interdependentes e tentamos minimizar a complexidade, explicando -as em uma sequência. Esperamos que todo esse artigo seja fácil de entender.