Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Projeto] Exemplo de um resultado de uma partida

Olá, comunidade Alura.

Eu fiz um exemplo, simulando um programa que retorna um resultado aleatório de uma partida de futebol, como se fosse num site de apostas; e nesse exemplo também coloquei o aproveitamento de cada equipe, imaginando a possibilidade da pessoa mudar de ideia e querer fazer uma aposta com base nessa informação.

Vou colocar o código do programa aqui; e peço por gentileza que façam a avaliação e me digam o que acharam, se poderia ser mais prático, se poderia colocar mais instruções, etc.

<meta charset="UTF-8">
<script>

function pulaLinha() {

     document.write("<br><br>");
 
}

function mostra(frase) {

     document.write(frase);
     pulaLinha();
 
}

var time_casa = prompt("Informe o nome do time da casa");

var time_visitante = prompt("Informe o nome do time visitante");

var gols_time_casa = Math.round(Math.random()*5);

var gols_time_visitante = Math.round(Math.random()*5);


mostra("O placar do jogo sorteado para a sua aposta será:");


mostra(time_casa + (" " + gols_time_casa) + " x " + (gols_time_visitante + " ") + time_visitante);

    if(gols_time_casa > gols_time_visitante) {

        mostra("Vitória do " + time_casa);

    }

    if(gols_time_casa < gols_time_visitante) {

            mostra("Vitória do " + time_visitante);

    }

    if(gols_time_casa == gols_time_visitante) {	

            mostra("O jogo terminará empatado");

    }


var total_jogos_time_casa = parseInt(prompt("Informe o total de jogos disputados do " + time_casa));

var total_jogos_time_visitante = parseInt(prompt("Informe o total de jogos disputados do " + time_visitante));


var total_pontos_time_casa = parseInt(prompt("Informe o total de pontos do " + time_casa));

var total_pontos_time_visitante = parseInt(prompt("Informe o total de pontos do " + time_visitante));


var perc_time_casa = Math.round((total_pontos_time_casa/(total_jogos_time_casa*3))*100); 

var perc_time_visitante = Math.round((total_pontos_time_visitante/(total_jogos_time_visitante*3))*100); 

mostra("<hr>" + "O aproveitamento dos dois times são:");


    if(perc_time_casa > 100) {

        alert("Número informado inválido");
        mostra ("Algum número do " + time_casa + " foi informado errado");
        
    } else {

        mostra("O aproveitamento do " + time_casa + " no campeonato é de " + perc_time_casa + "%"); 

    }

    if(perc_time_visitante > 100) {

        alert("Número informado inválido");
        mostra ("Algum número do " + time_visitante + " foi informado errado");

    } else {

        mostra("O aproveitamento do " + time_visitante + " no campeonato é de " + perc_time_visitante + "%"); 
            
    }

</script> 
2 respostas
solução!

Que massa Davi!

Eu tomei a liberdade de dar uma refatorada no seu código pra deixar ele um pouco mais atraente, se não se importar. Parti dos seguintes principios:

Criei funções separadas para obter os dados dos times, gols, e informações sobre jogos anteriores pra deixar código mais modular.

Sugiro que evite misturar lógica de apresentação com lógica de negócios como tinha nesse trecho do seu código (uso de document.write e alert). Geralmente pra seguirmos uma boa prática mantemos a manipulação do DOM separada da lógica do programa.

Sugiro também que, quando fr compartilhar assim um código para outras pessoas olharem, tenta colocar comentários explicativos para cada parte do código, explicando o propósito e a lógica por trás de cada seção, assim a gente entende melhor o que você estava querendo passar.

Por fim se aceitar uma implementação de melhoria, eu poderia sugerir que você implementasse validações para garantir que os dados inseridos pelo usuário sejam números válidos. Você pode fazer isso utilizando loops para solicitar novamente a entrada se um valor inválido for fornecido.

No mais posso dizer que foi massa sua iniciativa e espero que continue evoluindo dessa maneira.

Segue a refatoração do código :

<!DOCTYPE html>
<html lang="pt-BR">
<head>
    <meta charset="UTF-8">
    <title>Simulação de Jogo de Futebol</title>
</head>
<body>

<script>

function pulaLinha() {
    document.write("<br><br>");
}

function mostra(frase) {
    document.write(frase);
    pulaLinha();
}

function obterInformacoesTime(nomeTime) {
    return {
        totalJogos: parseInt(prompt(`Informe o total de jogos disputados do ${nomeTime}`)),
        totalPontos: parseInt(prompt(`Informe o total de pontos do ${nomeTime}`))
    };
}

function simularJogo() {
    var timeCasa = prompt("Informe o nome do time da casa");
    var timeVisitante = prompt("Informe o nome do time visitante");

    var golsTimeCasa = Math.round(Math.random() * 5);
    var golsTimeVisitante = Math.round(Math.random() * 5);

    mostra("O placar do jogo sorteado para a sua aposta será:");
    mostra(`${timeCasa} ${golsTimeCasa} x ${golsTimeVisitante} ${timeVisitante}`);

    if (golsTimeCasa > golsTimeVisitante) {
        mostra(`Vitória do ${timeCasa}`);
    } else if (golsTimeCasa < golsTimeVisitante) {
        mostra(`Vitória do ${timeVisitante}`);
    } else {
        mostra("O jogo terminará empatado");
    }

    return { timeCasa, timeVisitante };
}

function calcularAproveitamento(time) {
    var percAproveitamento = Math.round((time.totalPontos / (time.totalJogos * 3)) * 100);

    if (percAproveitamento > 100) {
        alert("Número informado inválido");
        mostra(`Algum número do ${time.nome} foi informado errado`);
    } else {
        mostra(`O aproveitamento do ${time.nome} no campeonato é de ${percAproveitamento}%`);
    }
}

var dadosTimeCasa = obterInformacoesTime("time da casa");
var dadosTimeVisitante = obterInformacoesTime("time visitante");

mostra("<hr>Informações sobre o aproveitamento:");

calcularAproveitamento(dadosTimeCasa);
calcularAproveitamento(dadosTimeVisitante);

</script>

</body>
</html>

Olá, Leandresson! Tudo bem?

Obrigado pelo feedback, eu vou testar o seu programa mais tarde, mas eu já gostei pelo fato de ter mais funções e recursos que eu ainda não conhecia.

Vou avançar mais nas aulas pra aprimorar ainda mais esse conhecimento.