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

Olá fiz o projeto do curso por mim mesmo após a conclusão do curso!

Vou colar o codigo abaixo! Quero dicas para saber se posso fazer em menos linhas e dicas para melhorar a minha escrita!
Se estiver confuso por favor fale para que eu possa melhorar!

alert('Seja bem vindo ao Advinhe um numero!');
let numero
let quantNumeros = prompt('A adivinhação seria de 1 a quantos?')
let numeroEscolhido = parseInt(Math.random() * quantNumeros + 1);
let tentativas = 0
let nomeTentativas = tentativas > 1? 'tentativas' : 'tentativa'
while (numero != numeroEscolhido) {
numero = prompt('Digite um numero de 1 a '+ quantNumeros)
if (numero < numeroEscolhido) {
alert('O numero é maior do que '+ numero);
} else if (numero > numeroEscolhido) {
alert('O numero é menor do que ' + numero);
}
tentativas++
}
if (numero = numeroEscolhido) {
alert('Parabens! O Numero secreto é '+ numeroEscolhido + '! Voce conseguiu em '+ tentativas + ' ' + nomeTentativas + '!')
}

Garanta sua matrícula hoje e ganhe + 2 meses grátis

Continue sua jornada tech com ainda mais tempo para aprender e evoluir

Quero aproveitar agora
3 respostas

Olá, tudo bem?
Legal, seu jogo de adivinhar número está funcional e direto, parabéns!
Pode aplicar algumas melhorias importantes para deixá-lo mais robusto, legível e correto.

1 - Corrigir o uso do operador de comparação no final.
Você usou if (numero = numeroEscolhido) — isso é uma atribuição, não uma comparação!
Deve ser:

if (numero == numeroEscolhido)

ou, melhor ainda (comparação estrita):

if (numero === numeroEscolhido)

2 - Atualizar nomeTentativas dentro do loop.
Você define nomeTentativas antes do loop, mas ele depende de tentativas, que muda no loop.
Então, dentro do loop ou antes do alert final, atualize o plural corretamente:

let nomeTentativas = tentativas > 1 ? 'tentativas' : 'tentativa';

3 - Transformar entrada do usuário em número.
prompt() retorna uma string, e você compara com numeroEscolhido (número). Então converta a entrada para número, assim, evita erros inesperados.

numero = parseInt(numero);
solução!

Código refatorado

alert('Seja bem vindo ao Advinhe um número!');

const quantNumeros = parseInt(prompt('A adivinhação seria de 1 a quantos?'));
const numeroEscolhido = Math.floor(Math.random() * quantNumeros) + 1;
let tentativas = 0;
let numero;

do {
  numero = parseInt(prompt('Digite um número de 1 a ' + quantNumeros));
  
  if (isNaN(numero) || numero < 1 || numero > quantNumeros) {
    alert('Por favor, digite um número válido entre 1 e ' + quantNumeros);
    continue;
  }
  
  tentativas++;
  
  if (numero < numeroEscolhido) {
    alert('O número é maior do que ' + numero);
  } else if (numero > numeroEscolhido) {
    alert('O número é menor do que ' + numero);
  }
  
} while (numero !== numeroEscolhido);

const nomeTentativas = tentativas > 1 ? 'tentativas' : 'tentativa';

alert(`Parabéns! O número secreto é ${numeroEscolhido}! Você conseguiu em ${tentativas} ${nomeTentativas}!`);

Muito obrigado moça! Vou levar em consideração!