Ajuda com exercício loop while

Olá pessoal! Precisava de uma ajuda, para saber o que tem de errado no meu código. O exercício é fazer um programa que adivinha o número, mas tem um um número limitado de tentativas. Fiz o código, quando executo faz certinho (pelo que vi), porém aparece esse erro pra mim: “>>>>Code is incorrect
Make sure you’re decrementing the value the variable tries after generating and print a new guess”.

Vou deixar aqui o código, espero não estar tão feioso… :grimacing:

var target = Math.floor(Math.random() * 11);
var guess = Math.floor(Math.random() * 11);
var tries = 5;

while (tries > 0) {
guess = Math.floor(Math.random() * 11);
console.log(guess);
target = Math.floor(Math.random() * 11);
console.log(target);
console.log(tries–);
if (guess == target && tries > 0) {
console.log(“Yay! You’ve done it!”);
break;
}
console.log(‘That sad! It was not this time…’);
}

Muito obg a quem puder me dar uma luzinha :blush:

Você está redefinido o valor do alvo (target) a cada iteração do while e eu creio que isso não seja o correto… Que tal assim:

<!DOCTYPE html>
<html lang="pt-BR">
	<head>
		<meta charset="UTF-8">
		<title>Teste de Função</title>
		
		<script>
			function soothsayer(){
				var target = Math.floor(Math.random() * 11);
				var guess = Math.floor(Math.random() * 11);
				var tries = 5;
				
				console.log("Target: " + target);
				
				while (tries > 0){
					guess = Math.floor(Math.random() * 11);
					console.log("Guess: " + guess);
					//target = Math.floor(Math.random() * 11);
					//console.log("Target: " + target);
					console.log("Tries: " + tries--);
					
					if(guess == target && tries > 0){
						console.log("Yay! You’ve done it!");
						break;
					}
					console.log("That sad! It was not this time...");
				}
			}
			soothsayer();
		</script>
	</head>
	<body>
	
	</body>
</html>

Rodando…

Valeu pela nomeação das variáveis no console… esqueci o mais básico rsrs…

Então, coloquei lá assim, mas ainda retorna um esse erro: “Make you you’re printing the value of guess to the console in the line below assigning it a new value”.

Não entendi o que fazer… o valor de guess não é sempre novo? E esse imprimir na linha de baixo, não seria o que já está acontecendo? Olha aí como fica lá…

“Make you you’re printing the value of guess to the console in the line below assigning it a new value” - Imprima o valor de guess no console na linha abaixo atribuindo-lhe um novo valor. Creio que esse erro se deve ao fato de que fora do while há uma atribuição do valor de guess e de novo dentro do while para só então imprimir. Com efeito, a ordem mais inteligente seria:

function soothsayer(){
	var target = Math.floor(Math.random() * 11);
	var guess = Math.floor(Math.random() * 11);
	var tries = 5;
	
	console.log("Target: " + target);
	
	while (tries > 0){
		console.log("Guess: " + guess);
		console.log("Tries: " + tries--);
		guess = Math.floor(Math.random() * 11);
		if(guess == target && tries > 0){
			console.log("Yay! You’ve done it!");
			break;
		}
		console.log("That sad! It was not this time...");
	}
}
soothsayer();

Ou seja, a cada atribuição guess = Math.floor(Math.random() * 11) há uma impressão no console correspondente. Também pode sugerir que se deva eliminar a inicialização de guess fora do while:

function soothsayer(){
	var target = Math.floor(Math.random() * 11);
	var guess;
	var tries = 5;
	
	console.log("Target: " + target);
	
	while (tries > 0){
		guess = Math.floor(Math.random() * 11);
		console.log("Guess: " + guess);
		console.log("Tries: " + tries--);
		
		if(guess == target && tries > 0){
			console.log("Yay! You’ve done it!");
			break;
		}
		console.log("That sad! It was not this time...");
	}
}
soothsayer();

Então, se eu coloco como na primeira ordem que você colocou, aparece esse erro: “The first line in your while’s block should assign a new value to the variable guess.”.
E se eu coloco na segunda ordem, volta o erro anterior: “Make you you’re printing the value of guess to the console in the line below assigning it a new value”…
Não consigo entender…