2
respostas

[Projeto] Ajuda em um projeto Relacionado a logica de programacao

Ola pessoa eu sou novo na area e apos eu terminar o Curso de logica de programacao comecei a estudar e tentar aprimorar um pouco melhor o codigo do jogo do número secreto. aqui está o codigo:

alert('Olá! Seja bem-vindo ao jogo do número secreto. Seu objetivo é: acerta o número secreto na menor quantidade de tentativas possivel');
let numeroMaximo = parseInt(prompt('Escolha o número maximo para comecar a jogar'));
//Se ele digitar algo que nao e um numero ou(||) numero for menor ou igual que 1
//if (isNaN(numeroMaximo) || numeroMaximo <= 1) {
// alert('Digite Por favor um número valido e que seja maior que 1')
//} else {
// Se ele nao digitar algo que nao for um número e nao digitar um numero menor ou igual a 1
if (!isNaN(numeroMaximo) && numeroMaximo >= 1) {

    let numeroSecreto = parseInt(Math.random() * numeroMaximo + 1)
    let Chute;
    let Tentativas = 1;

    //enquanto o número do chute não for o número secreto.
    while (Chute != numeroSecreto) {
        Chute = prompt(`Digite um número entre 1 e ${numeroMaximo} e tente acertar o número secreto!.`);
        let variaveldoChute = Chute > numeroSecreto ? 'Menor' : 'Maior'
        // Se o chute for igual com sinal de == ao número secreto.
        if (Chute == numeroSecreto) {
            break;
        } else {
            alert(` Infeslizmente voce errou! dica o número é ${variaveldoChute} que o número ${Chute}`);
        }
        Tentativas++
    }
    let palavraTentativa = Tentativas > 1 ? 'tentativas' : 'tentativa';
    alert(`Genial! Parabéns! o número secreto é o ${numeroSecreto} e voce acertou com ${Tentativas} ${palavraTentativa}`);
} else {
    alert('Por favor! Digite um número válido maior que 1');
}

Como podem ver tem algumas coisas diferentes. Minha dúvida é que eu recebir um desafio da Luri de rescrever o código usando o &&. Porem se a pessoa digitar um número menor que um ou algo que nao seja número aparece o alert e vai para a página do vencedor. alguem poderia me ajudar ? sou muito novo na aerea e estou aprendendo.

2 respostas

Oi, Gustavo! Tudo bem?

Parabéns pelo código! O problema mencionado está ocorrendo porque, no código atual, o else está sendo executado corretamente, mas a lógica dentro do if principal precisa ser ajustada para garantir que o fluxo do programa não continue caso o número digitado seja inválido. Dessa forma, podemos ajustar o código se acordo com o exemplo abaixo:

alert('Olá! Seja bem-vindo ao jogo do número secreto. Seu objetivo é: acertar o número secreto na menor quantidade de tentativas possível');
let numeroMaximo = parseInt(prompt('Escolha o número máximo para começar a jogar'));

// Verifica se o número é válido e maior que 1
if (!isNaN(numeroMaximo) && numeroMaximo > 1) {
    let numeroSecreto = parseInt(Math.random() * numeroMaximo + 1);
    let Chute;
    let Tentativas = 1;

    // Enquanto o número do chute não for o número secreto.
    while (Chute != numeroSecreto) {
        Chute = parseInt(prompt(`Digite um número entre 1 e ${numeroMaximo} e tente acertar o número secreto!`));

        // Verifica se o chute é um número válido
        if (isNaN(Chute) || Chute < 1 || Chute > numeroMaximo) {
            alert('Por favor, digite um número válido dentro do intervalo especificado.');
            continue;
        }

        let variaveldoChute = Chute > numeroSecreto ? 'Menor' : 'Maior';

        // Se o chute for igual ao número secreto.
        if (Chute == numeroSecreto) {
            break;
        } else {
            alert(`Infelizmente você errou! Dica: o número é ${variaveldoChute} que o número ${Chute}`);
        }
        Tentativas++;
    }

    let palavraTentativa = Tentativas > 1 ? 'tentativas' : 'tentativa';
    alert(`Genial! Parabéns! O número secreto é o ${numeroSecreto} e você acertou com ${Tentativas} ${palavraTentativa}`);
} else {
    alert('Por favor, digite um número válido maior que 1');
}

As mudanças principais foram:

  1. Usar && para verificar se o número máximo é válido e maior que 1.
  2. Adicionar uma verificação dentro do loop while para garantir que o chute é um número válido e dentro do intervalo especificado. Se não for, o continue faz com que o loop vá para a próxima iteração sem executar o restante do código do loop.

Espero ter ajudado!

Um forte abraço e bons estudos!

Oi sara Obrigado Pela ajuda. Porém, minha duvida esta na umtima linha do alert. No caso quando o prompot pergunta sobre o numero maximo para a pessoa e ela responder ex: letra g o ultimo else entra em acao porém assim que ele fala para digitar um número validor maior que 1 ja vai direto para a pagina do vencedor. espero ter reformulado melhor minha pergunta. quanto a também verificar se os chutes também sao validos foi um otimo complemento e tambem passarei a usar nesse cofigo. muito obrigado e espero que eu tenha reformulado melhor minha pergunta.