Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
4
respuestas

[Duda] Ayuda no me genera el mensaje de la cantidad maxima de datos al presionar nuevo juego

No se que estoy haciendo mal, pero cuando pruebo e ingreso los 10 datos y le doy a nuevo juego no me aparece el mensaje de "Ya se sortearon todos los numeros posibles.", algo esta mal en el codigo??

let numeroSecreto = 0;
let intentos = 0;
let listaNumerosSorteados = [];
let numeroMaximo = 10;

function asignarTextoElemento (eLemento , texto){
    let elementoHTML = document.querySelector(eLemento);
    elementoHTML.innerHTML = texto;
    return;
}

function verificarIntento () {
    let numeroDeUsuario = parseInt(document.getElementById("valorUsuario").value);
    console.log(numeroSecreto);

    if (numeroDeUsuario === numeroSecreto) {
        asignarTextoElemento ("p", `Felicidades, acertaste en ${intentos} ${(intentos == 1)? "vez":"veces"}`);
        document.getElementById("reiniciar").removeAttribute("disabled")
    } else {
        //el usuario no acerto
        if (numeroDeUsuario>numeroSecreto){
            asignarTextoElemento ("p", "El número secreto es menor.");
        } else {
            asignarTextoElemento ("p", "El número secreto es mayor.");
        }
        intentos ++;
        limpiarcaja();
    }
    return;
}
//creamos la funciona para limpiar la caja
function limpiarcaja () {
    document.querySelector("#valorUsuario").value ="";
}


function condicionesIniciales (){
    asignarTextoElemento("h1","Juego del número secreto!");
    asignarTextoElemento("p", `Indica un número del 1 al ${numeroMaximo}`);   
    numeroSecreto = generaNumeroSecreto();
    intentos = 1
}

//construimos la funciona para reinicarel juego
function reiniciaJuego () {
    //limpiar la caja
    limpiarcaja();
    //indicar mensaje de inicio de intervalo de numeros
    //generar el numero aleatorio
    //inicializar el nro de intentos
    condicionesIniciales();
    //deshabilitar el boton de "nuevo juego", xk solo se habilita una vez se temrina el primer juego
    document.querySelector("#reiniciar").setAttribute("disabled","true")
}

condicionesIniciales();

/* en el caso de funciones, no importa la posicion de la
 declaracion de los elemento o variables caso de elemento y texto */

function generaNumeroSecreto() {
    let numeroGenerado = Math.floor(Math.random()*numeroMaximo)+1;  
    console.log(numeroGenerado);
    console.log(listaNumerosSorteados);
    // si ya mostramos todos los numeros, 
    if (listaNumerosSorteados.length == numeroMaximo) {
        asignarTextoElemento ("p", "Ya se sortearon todos los numeros posibles.")
    } else {
        //si el numero generado esta incluido en la lista 
        if (listaNumerosSorteados.includes(numeroGenerado)) {
            return generaNumeroSecreto();
        } else {
            listaNumerosSorteados.push(numeroGenerado);
            return numeroGenerado;
        }
    }
}
4 respuestas

Copié tu código y no hubo problemas, el mensaje aparece cuando haces los 10 intentos y reiniciar el juego por última vez, pero si les das click de nuevo a intentar el mensaje desaparecerá, tal vez ese haya sido el error. (La imagen muestra el mensaje final de " se han sorteado todos los números" )

Pues no sé si tenga que ver, pero te falta un ; al final de esta línea: asignarTextoElemento ("p", "Ya se sortearon todos los numeros posibles.") También veo que para elegir los elementos de la función estás usando " " en lugar de ' '. No estoy seguro de si dentro del paréntesis de la función tenga que ver en algo, pero podrías intentar así.

Corrijo: tras modificar en el HTML cambiando "reniciarjuego" por "reinciajuego" tu código cargó sin problemas Ingrese aquí la descripción de esta imagen para ayudar con la accesibilidad

Comparto algunas pequeñas modificaciones para evitar el error al ingresar nuevos valores, basicamente evitando el uso de los botones una vez llena la lista. Se debe asignar el id "intentar" al botón de intentos desde el HTML:

let numeroSecreto = 0;
console.log(numeroSecreto);
let intentos = 0;
let listaNumerosSorteados = [];
let numeroMaximo = 10;
document.getElementById('intentar').removeAttribute('disabled');

function asignarTextoElemento(elemento, texto) {
    //elemento y texto son parámetros para hacer la función genérica 
    let elementoHTML = document.querySelector(elemento);
    elementoHTML.innerHTML = texto;
    return;
}

function verificarIntento() {
    let numeroDeUsuario = parseInt(document.getElementById('valorUsuario').value);
    console.log(intentos);
        if (numeroDeUsuario === numeroSecreto) {
          asignarTextoElemento('p', `Acertaste el número secreto en ${intentos} ${(intentos === 1) ? 'vez' : 'veces'}`);
          document.getElementById('reiniciar').removeAttribute('disabled');
          
        } else {
          //el usuario no acertó
         if (numeroDeUsuario > numeroSecreto) {
         asignarTextoElemento('p', 'El número secreto es menor');
         } else {
          asignarTextoElemento('p', 'El número secreto es mayor');
          }
          intentos++;
          limpiarCaja();
        }
    return;
}

function limpiarCaja(){
  // No es necesario hacerlo así:
  // let valorCaja = document.querySelector('#valorUsuario');
  //valorCaja.value = '';
  document.querySelector('#valorUsuario').value = '';
}

function generarNumeroSecreto() {
    let numeroGenerado = Math.floor(Math.random()*numeroMaximo)+1;
    console.log(numeroGenerado);
    console.log(listaNumerosSorteados);
    //si ya todos los números posibles fueron sorteados
    if(listaNumerosSorteados.length == numeroMaximo){
      asignarTextoElemento('p','Ya se sortearon todos los números posibles');
      document.getElementById('intentar').setAttribute('disabled','true');
    } else {
        //si el número generado está en la lista
      if (listaNumerosSorteados.includes(numeroGenerado)){
        return generarNumeroSecreto();
      }else{
        listaNumerosSorteados.push(numeroGenerado);
        return numeroGenerado;
      }
    }
}

function condicionesIniciales(){
  
  asignarTextoElemento('h1', 'Juego del número secreto!');
  asignarTextoElemento('p', `Indica un número del 1 al ${numeroMaximo}`);
  numeroSecreto = generarNumeroSecreto();
  console.log(numeroSecreto);
  intentos = 1;
}

function reiniciarJuego(){
  //limpiar caja
  limpiarCaja();
  //indicar mensaje de inicio
    //Generar número aleatorio
  //deshabilitar botón de nuevo juego
  condicionesIniciales();
  //Iniciar el número de intentos
  document.querySelector('#reiniciar').setAttribute('disabled','true');
  
}

  condicionesIniciales();