Hola, aparte de que tu problema con el cero, tu código también guarda repetidos. Hay modifique tu código para solucionar los dos problemas y te comente al lado de cada modificación el porque la hice:
<meta charset="utf-8">
<input>
<button>Verificar si acerto con el secreto</button>
<script>
function aleatorio () {
return Math.round(Math.random()*10)
}
function sortearNumeros (cantidad) {
var secretos = []
for (var contador = 1; contador <= cantidad;) {
/*tuve que quitar del for el contador++ y ponerlo mas abajo
porque sino siempre hacia 4 repeticiones.
Aunque no da error, no es recomendable hacer esto por eso si no sabemos
cuantas repeticiones va a hacer nuestro bucle debemos usar while */
var numeroAleatorio = aleatorio();
console.log(numeroAleatorio);
var encontrado = false;
if (numeroAleatorio != 0){
for (var posicion = 0; posicion < secretos.length; posicion++) {
if (numeroAleatorio == secretos[posicion]){
encontrado = true /* te faltaba cambiar el valor de econtrado a true
para que en el if que sigue no guarde el valor si ya lo encontro.*/
break;
}
}
if (encontrado == false) {
secretos.push(numeroAleatorio);
contador++ /*Aqui puse el contador++ para que aumente solo si guardo
un numero valido , entonces guardara 4 valores validos y terminara el bucle for.*/
}
}
}
return secretos
}
var secretos = sortearNumeros(4);
console.log (secretos);
var input = document.querySelector("input");
input.focus();
function verificar() {
var encontrado = false;
for(var posicion = 0; posicion < 4; posicion++) {
if (parseInt(input.value) == secretos[posicion]) {
alert("Usted acerto");
encontrado = true;
break;
}
if (encontrado == false) {
alert("Usted se equivoco");
}
input.value = "";
input.focus();
}
}
var button = document.querySelector("button")
button.onclick = verificar;
</script>
Espero haberte ayudado.