En el siguiente script, estoy tratando de obtener una función para encontrar un número aleatorio elegido por el sistema. Para ayudarme a encontrar el número: Cuando el número a buscar es más pequeño que el que ingresé en la interfaz: Recibo un mensaje de que el número a encontrar es más pequeño Cuando el número a encontrar es más grande que el que ingresé en la interfaz: Recibo un mensaje de que el número a buscar es más grande Cuando encuentro el número, recibo un mensaje que me dice que he encontrado el número en xxx intentos. Cuando encuentro el número de una vez, quiero cambiar prueba por prueba en el mensaje
Cuando giro el código a continuación, solo tengo un cuadro para preguntarme cuál es el número que debo adivinar. Entonces no pasa nada. ¿Puede ayudarme a solucionar los problemas de código en mi script a continuación? ¿Podría indicar también si mi enfoque es correcto para contar la cantidad de intentos en el código a continuación? ¿Cómo procederías?
function askValue() { var answer = window.prompt( "Guess the number, enter a number between 1 and 10" ); // keep the answer to use it in the loop if (!answer || isNaN(answer)) { console.log("Please enter a valid number"); } else { return answer; } } function guessnumber() { var secret_number = Math.floor(Math.random() * 10) + 1; var guess = askValue(); var attempts; var i = 0; var resultMessage = "You won, you take"; while (win == false) { attempts++; if (guess < secret_number) { console.log("The secret number is bigger"); i++; } else if (guess > Secret_number) { console.log("The secret number is smaller"); i++; } else if (guess == secret_number) { win = true; if (i == 1) { var attempt_word = " "; attempt_word = "attempt"; } else if ((attempt_word = "attempts")) { resultMessage += Number(i).toString() + attempt_word; } } console.log(resultMessage); } } // call the function guessnumber();Hago que su código funcione corrigiendo muchos errores y fallando algunos de ellos:
var que es antiguo y es mejor usar la palabra clave let para declarar la variable.if (+answer < 1 || +answer > 10)+ , es solo una abreviatura de la parseInt() para convertir una cadena en un número, ya que la cadena de retorno del mensaje no es un número function askValue() { let answer = window.prompt( "Guess the number, enter a number between 1 and 10" ); // keep the answer to use it in the loop if (!answer || isNaN(answer)) { alert("Please enter a valid number"); } else if (+answer < 1 || +answer > 10) { alert("Please enter a number between 1 and 10"); } else { return +answer; } } // Better using `let` than `var` function guessnumber() { let secret_number = Math.floor(Math.random() * 10) + 1; let guess = askValue(); let attempts = 0; //initialse attempts with zero let i = 0; let resultMessage = "You won, you take "; let win = false; //declare win while (win == false) { attempts++; if (guess < secret_number) { alert("The secret number is bigger"); i++; guess = askValue(); } else if (guess > secret_number) { //s lowercase not capital alert("The secret number is smaller"); i++; guess = askValue(); } else if (guess == secret_number) { win = true; resultMessage += attempts + " attempt" + (i != 1 ? "s" : ""); alert(resultMessage); } else { guess = askValue(); } } } // call the function guessnumber();