Gioco indovina numero in JavaScript

In questa lezione realizzeremo il classico esempio del gioco indovina numero in JavaScript.

Il gioco consiste nell’indovinare un numero casuale compreso tra 1 e 100, generato dal computer.

Il giocatore ha a disposizione 5 tentativi, nei quali viene aitutato da un semplice suggerimento: se il numero è più basso del numero da indovinare gli viene suggerito di provare con un numero più alto e viceversa se il numero è più alto.

Gioco indovina numero in JavaScript – procedimento

Per risolvere questo semplice giochino in JavaScript, creiamo innanzitutto una variabile numeroDaIndovinare che contiene un numero random da 1 a 100.

Dopo fissiamo una variabile n uguale a 5 che corrisponde al numero dei tentativi da effettuare.

Generiamo dunque un ciclo for nel quale ad ogni iterazione proviamo ad indovinare il numero.

Confrontiamo poi il nostro numero con quello da indovinare utilizzando le istruzioni condizionali. Se il numero da indovinare è più basso o più alto proviamo a dare un suggerimento. Altrimenti ha indovinato il numero.

Cominciamo ad implementare una prima soluzione in cui però non usciremo dal ciclo se il numero è indovinato. Dopo ragioneremo sul da farsi.

Ecco dunque il codice completo del gioco indovina numero in JavaScript:


var numeroDaIndovinare = Math.floor(Math.random() * 99) + 1;
console.log(numeroDaIndovinare);
var n = 5;

for (var i = 0; i < n; i++){
  a = parseInt(prompt('inserisci un numero'));
  if (a > numeroDaIndovinare) {
    console.log('Inserisci un numero più piccolo');
  } else if (a < numeroDaIndovinare)  {
    console.log('Inserisci un numero più grande');
  } else {
    console.log('Hai indovinato al tentativo numero ', i+1);
  }
}

Il problema di questo algoritmo sta nel fatto che, anche se si indovina il numero ad esempio al secondo tentativo, occorre un modo per bloccare il ciclo.

Evitiamo di utilizzare l'istruzione break e procediamo invece con il ragionamento. Occorre uscire non appena si indovina il numero, sempre effettuando un numero massimo di 5 tentativi.

Quindi aggiungiamo una variabile indovinato inizializzata a false, che verrà impostata a true quando il numero verrà indovinato.

Dunque effettuiamo il ciclo di istruzioni finchè non si raggiunge il numero massimo di tentativi e contemporaneamente la variabile indovinato è false.

Implementiamo la soluzione del gioco indovina numero in JavaScript dapprima con il ciclo for:


var numeroDaIndovinare = Math.floor(Math.random() * 99) + 1;
var n = 5;
var indovinato = false;
var a;

for (var i = 0; i < n && indovinato == false ; i++){
  a = parseInt(prompt('inserisci un numero'));
  if (a > numeroDaIndovinare) {
    console.log('Inserisci un numero più piccolo');
  } else if (a < numeroDaIndovinare)  {
    console.log('Inserisci un numero più grande');
  } else {
    console.log('Hai indovinato al tentativo numero ', i+1);
    indovinato = true;
  }
}

L'algoritmo adesso è giusto, ma in questo caso il ciclo corretto da utilizzare sarebbe il while. Difficilmente infatti si vede il ciclo for utilizzato in questo modo.

Dunque scriviamo lo stesso algoritmo in forma più elegante con il while.


var numeroDaIndovinare = Math.floor(Math.random() * 99) + 1;
var n = 5;
var indovinato = false;
var a;

var i = 0;

while (i < n && indovinato == false) {
  a = parseInt(prompt('inserisci un numero'));
  if (a > numeroDaIndovinare) {
    console.log('Inserisci un numero più piccolo');
  } else if (a < numeroDaIndovinare)  {
    console.log('Inserisci un numero più grande');
  } else {
    console.log('Hai indovinato al tentativo numero ', i+1);
    indovinato = true;
  }
  i++;
}

Questo è una semplice risoluzione del gioco indovina numero in JavaScript, provate pure ad implementare la vostra.

Alcuni link utili

Indice tutorial JavaScript

Introduzione al tutorial JavaScript

Il linguaggio JavaScript

Come utilizzare JavaScript alert

Come utilizzare JavaScript confirm

Utilizzare JavaScript prompt

Variabili in JavaScript

JavaScript substring

1 commento su “Gioco indovina numero in JavaScript”

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *