Executando verificação de segurança...
1

Se me permite alguns pitacos...

A parte do if/else poderia ser assim:

if (chute == numeroSecreto) {
    alert("Acertou! Você fez um total de " + tentativas + " chutes!");
} else if (chute > numeroSecreto) {
    alert(chute + " é Maior do que o Número Secreto!");
} else {
    alert(chute + " é Menor do que o Número Secreto!");
}

Afinal, se chute não for igual a numeroSecreto, ele não entra no primeiro if. Se chute não for maior que numeroSecreto, não entra no segundo if. Então se ele não entrou no if e nem no else if, é porque chute não é igual e nem maior que numeroSecreto. A única possibilidade que sobrou é chute ser menor que numeroSecreto, então não precisa testar isso de novo.

Ok, o único caso em que isso não funcionaria é se a pessoa não digitar um número, pois aí todas as comparações falhariam, mas não ficou claro se era para validar isso. Mas se chute sempre for um número, o último caso só precisa de um else e nada mais.


Quanto a isso:

var numeroSecreto = parseInt(Math.random() * 1001);

Sei que nesse caso "funciona", mas a ideia de parseInt é que ele receba uma string e a converta para número. Se você quer truncar/arredondar um número, tem casos em que parseInt pode falhar. Uma opção mais segura é usar Math.floor:

var numeroSecreto = Math.floor(Math.random() * 1001);

Um lugar em que parseInt poderia ser usado é no prompt. Afinal, prompt retorna uma string, e nesse caso faz sentido converter para número. Sei que o JavaScript faz coerção de tipos quando você faz as comparações, mas usar parseInt deixa claro a intenção ("aqui precisa ser um número"). Com isso, também se torna mais simples verificar se foi de fato digitado um número, como veremos no código abaixo.

E quando acabam os chutes, vc mostra "Ainda lhe restam 0 chutes", mas será que precisa dessa mensagem? Se restam 0 chutes, é porque acabou, acho que poderia pular essa mensagem quando chegar a zero e mostrar logo a mensagem final.

Por fim, daria para eliminar algumas variáveis, seria assim:

// floor para arredondar o valor
// (parseInt não funciona em todos os casos: https://pt.stackoverflow.com/q/506307/112052)
var numeroSecreto = Math.floor(Math.random() * 1001);
var chutesLimite = 15;
var tentativas = 0;

alert("E O Jogo Começa! Você tem um limite de " + chutesLimite + " chutes!");
while (true) {
    // parseInt para converter para número
    var chute = parseInt(prompt("Digite um número entre 0 e 1000"));
    if (isNaN(chute)) { // verifica se foi digitado um número mesmo
        alert('Você não digitou um número');
        // vai para a próxima iteração, entendo que não conta como tentativa,
        // já que não é um número
        continue;
    }

    tentativas++;
    if (chute == numeroSecreto) {
        alert("Acertou! Você fez um total de " + tentativas + " chutes!");
        break; // sai do while
    } else if (chute > numeroSecreto) {
        alert(chute + " é Maior do que o Número Secreto!");
    } else {
        // se chegou nesse else, é porque chute não é igual e nem maior que numeroSecreto
        // então com certeza é menor e não preciso testar isso de novo
        alert(chute + " é Menor do que o Número Secreto!");
    }

    if (tentativas == chutesLimite) {
        alert("Você atingiu o limite de chutes. O Jogo está finalizado.");
        break; // sai do while
    } else {
        alert("Ainda lhe restam " + (chutesLimite - tentativas) + " chutes!");
    }
}
Carregando publicação patrocinada...
1

Olá.

Sim, as suas três observações estão certas, mas estou acompanhando o conteúdo do curso Imersão Dev, que é um curso introdutório de programação. Por isso não coloquei functionalidades muito complicadas.