É uma limitação nesse código, caso a quantidade de elementos do vetor segredos seja maior que 10, o código não funciona já que ele ficará tentando sortear um número que não se repita na última posição, o que é impossível já que todos os elementos possíveis já foram sorteados...prendendo o programa em um loop infinito.
<meta charset="UTF-8">
<body>
<input type="text">
<button>Compare com o meu segredo</button>
<script>
function sorteia() {
return Math.round(Math.random() * 10);
}
function sorteiaNumeros(quantidade) {
var segredos = [];
var numero = 0
while (numero < quantidade) {
var numeroAleatorio = sorteia();
if (numeroAleatorio != 0) {
var achou = false;
for (let posicao = 0; posicao < segredos.length; posicao++) {
if (numeroAleatorio == segredos[posicao]) {
achou = true;
}
}
if (achou == false) {
segredos.push(numeroAleatorio);
numero++;
}
}
}
return segredos;
}
var segredos = sorteiaNumeros(8);
console.log(segredos);
var input = document.querySelector("input");
input.focus();
function verifica() {
var achou = false;
for (let posicao = 0; posicao < segredos.length; posicao++) {
if (input.value == segredos[posicao]) {
alert("VOCÊ ACERTOU!");
achou = true;
break;
}
}
if (achou == false) {
alert("VOCÊ ERROU!");
}
input.value = "";
input.focus();
}
var button = document.querySelector("button");
button.onclick = verifica;
</script>
</body>