Ripasso JS - Gioco Indovina Numero con Ciclo While JavaScript
Questo codice JavaScript implementa un semplice gioco in cui l'utente deve indovinare un numero segreto generato casualmente dal computer.
Come Funziona il Gioco
Il gioco segue questa logica:
- Il computer genera un numero casuale
- L'utente inserisce la sua ipotesi
- Il computer fornisce un suggerimento ("troppo alto" o "troppo basso")
- Il processo si ripete finché l'utente non indovina
Analisi del Codice
Generazione del Numero Segreto
let numSegreto = Math.floor(1 + Math.random()*10);
console.log("Il numero segreto estratto è: " + numSegreto);
Math.random()genera un numero decimale casuale tra 0 e 1- Moltiplicando per 10 otteniamo un numero tra 0 e 10
- Aggiungendo 1 spostiamo l'intervallo tra 1 e 11
Math.floor()arrotonda per difetto, dando numeri interi da 1 a 10- Il
console.log()mostra il numero segreto (utile per testare il codice)
Inizializzazione della Variabile Utente
let numUtente = null;
La variabile numUtente viene inizializzata con null per indicare che non è ancora stato inserito alcun valore.
Il Ciclo Principale del Gioco
while(numUtente != numSegreto){
Il ciclo while continua finché il numero dell'utente è diverso dal numero segreto.
Acquisizione dell'Input dell'Utente
let numUtenteRaw = prompt("Inserisci il numero");
numUtente = numUtenteRaw ? parseInt(numUtenteRaw) : null;
prompt()mostra una finestra di dialogo per l'inserimentoparseInt()converte la stringa in numero intero- L'operatore ternario
?:gestisce il caso in cui l'utente annulli o non inserisca nulla
Controllo di Validità
if(!numUtente){
return;
}
Se l'utente non inserisce un numero valido o annulla, il programma termina con return.
Logica di Confronto
if(numUtente > numSegreto){
alert("Valore troppo Alto, Riprova");
}else if (numUtente < numSegreto){
alert("Il valore è troppo basso, Riprova");
}else{
alert("Complimenti, hai vinto");
}
Il programma confronta il numero dell'utente con quello segreto e mostra:
- "Troppo Alto" se il numero è maggiore
- "Troppo Basso" se il numero è minore
- "Complimenti, hai vinto" se i numeri coincidono
Possibili Miglioramenti
- Limitare il numero di tentativi
- Aggiungere un contatore dei tentativi
- Permettere di giocare più partite consecutive
- Migliorare la gestione degli errori per input non numerici
Questo è un ottimo esempio di programmazione che combina generazione di numeri casuali, cicli, condizioni e interazione con l'utente!
let numSegreto = Math.floor(1 + Math.random()*10); // genero numeri da 1 a 10
console.log("Il numero segreto estratto è: " + numSegreto); // solo per debug
let numUtente = null;
while(numUtente != numSegreto){
let numUtenteRaw = prompt("Inserisci il numero");
numUtente = numUtenteRaw ? parseInt(numUtenteRaw) : null;
if(!numUtente){
return;
}
if(numUtente > numSegreto){
alert("Valore troppo Alto, Riprova");
}else if (numUtente < numSegreto){
alert("Il valore è troppo basso, Riprova");
}else{
alert("Complimenti, hai vinto");
}
}