Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

blackjack-entrega #61

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
89 changes: 78 additions & 11 deletions versao_1.js
Original file line number Diff line number Diff line change
@@ -1,12 +1,79 @@
/**
* EXEMPLO DE UTILIZAÇÃO DA 'comprarCarta'
*
*
const carta = comprarCarta(); // Sorteia uma carta. Por exemplo, o rei de ouros

console.log(carta.texto) // imprime o texto da carta. Exemplo: "K♦️" (indica "K" de ouros)
console.log(carta.valor) // imprime o valor da carta (um número). Exemplo: 10 (dado que "K" vale 10)
*
*
*
/* // Função para criar e embaralhar o baralho
function criarBaralho() {
const naipes = ["♥️", "♣️", "♦️", "♠️"];
const numeros = ["A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K"];
const baralho = [];

for (const naipe of naipes) {
for (const numero of numeros) {
const carta = {
texto: `${numero}${naipe}`,
valor: numero === "A" ? 11 : numero === "J" || numero === "Q" || numero === "K" ? 10 : parseInt(numero)
};
baralho.push(carta);
}
}

return baralho.sort(() => Math.random() - 0.5);
}

// Função para comprar uma carta do baralho
function comprarCarta(baralho) {
return baralho.pop();
}

// Função para calcular a pontuação de uma mão
function calcularPontuacao(mao) {
let pontuacao = 0;
let asCount = 0;

for (const carta of mao) {
pontuacao += carta.valor;

if (carta.valor === 11) {
asCount++;
}
}

while (asCount > 0 && pontuacao > 21) {
pontuacao -= 10;
asCount--;
}

return pontuacao;
}

// Função para exibir a mão de um jogador
function exibirMao(mao, jogador) {
console.log(`${jogador} - cartas: ${mao.map(carta => carta.texto).join(" ")} - ${calcularPontuacao(mao)}`);
}

// Boas-vindas ao jogo
console.log("Bem-vindo(a) ao jogo de Blackjack 1.0");

// Iniciar uma nova rodada
let novoJogo = confirm("Iniciar uma nova rodada?");
if (novoJogo) {
// Criar e embaralhar o baralho
let baralho = criarBaralho();

// Comprar cartas para o usuário e o computador
let maoUsuario = [comprarCarta(baralho), comprarCarta(baralho)];
let maoComputador = [comprarCarta(baralho), comprarCarta(baralho)];

// Exibir as cartas dos jogadores
exibirMao(maoUsuario, "Usuário");
exibirMao(maoComputador, "Computador");

// Determinar o vencedor
if (calcularPontuacao(maoUsuario) > calcularPontuacao(maoComputador)) {
console.log("O usuário ganhou!");
} else if (calcularPontuacao(maoComputador) > calcularPontuacao(maoUsuario)) {
console.log("O computador ganhou!");
} else {
console.log("Empate!");
}
} else {
console.log("Fim do jogo ");
}
*/
114 changes: 102 additions & 12 deletions versao_2.js
Original file line number Diff line number Diff line change
@@ -1,13 +1,103 @@
/**
* EXEMPLO DE UTILIZAÇÃO DA 'comprarCarta'
*
*
const carta = comprarCarta(); // Sorteia uma carta. Por exemplo, o rei de ouros

console.log(carta.texto) // imprime o texto da carta. Exemplo: "K♦️" (indica "K" de ouros)
console.log(carta.valor) // imprime o valor da carta (um número). Exemplo: 10 (dado que "K" vale 10)
*
*
*
*/
//alert("Bem-vinde ao jogo de Blackjack!");

if (confirm("Bem-vinde ao Grande jogo Blackjack 2.0!"+ "\n" +"Deseja iniciar uma nova rodada?")) {
let jogador = [];
let computador = [];

// Sortear 2 cartas iniciais
let cartasOk = false;
while (!cartasOk) {
jogador.push(comprarCarta());
jogador.push(comprarCarta());
computador.push(comprarCarta());
computador.push(comprarCarta());
if ((jogador[0].valor === 11 && jogador[1].valor === 11) || (computador[0].valor === 11 && computador[1].valor === 11)) {
jogador = [];
computador = [];
} else {
cartasOk = true;
}
}

// Mostrar cartas do usuário e primeira do computador
// Perguntar se o usuário deseja comprar mais até que ele diga que não
let comprando = true;
while (comprando) {
let textos = "";
let pontos = 0;
for (let carta of jogador) {
textos += carta.texto + " ";
pontos += carta.valor;
}

if (pontos > 21) {
comprando = false;
} else {
let confirmCompra = confirm(
`Suas cartas são ${textos}. A carta revelada do computador é ${computador[0].texto}.` +
"\n" +
"Deseja comprar mais uma carta?"
);

if (confirmCompra) {
jogador.push(comprarCarta());
} else {
comprando = false;
}
}
}

// Cálculo dos pontos do usuário e do computador
let pontosComputador = 0;
let pontosJogador = 0;
let textosComputador = "";
let textosJogador = "";

for (let carta of computador) {
pontosComputador += carta.valor;
textosComputador += carta.texto + " ";
}
for (let carta of jogador) {
pontosJogador += carta.valor;
textosJogador += carta.texto + " ";
}

// Compra de cartas do computador
if (pontosJogador <= 21) {
while (pontosComputador < pontosJogador && pontosComputador <= 21) {
computador.push(comprarCarta());
pontosComputador = 0;
textosComputador = "";
for (let carta of computador) {
pontosComputador += carta.valor;
textosComputador += carta.texto + " ";
}
}
}

let resultado = "";

// Verificação de quem ganhou
if (pontosJogador > pontosComputador && pontosJogador <= 21) {
resultado = "O usuário ganhou!";
} else if (pontosComputador > pontosJogador && pontosComputador <= 21) {
resultado = "O computador ganhou!";
} else if (pontosComputador > 21 && pontosJogador <= 21) {
resultado = "O usuário ganhou!";
} else if (pontosJogador > 21 && pontosComputador <= 21) {
resultado = "O computador ganhou!";
} else {
resultado = "Empate!";
}

// Imprimir cartas dos dois lados
alert(
`Usuario - Cartas: ${textosJogador} - Pontuação: ${pontosJogador}` +
"\n" +
`Computador - Cartas: ${textosComputador} - Pontuação: ${pontosComputador}` +
"\n" +
resultado
);
} else {
alert("Fim do jogo.");
}