Oggiamo proviamo a progettare un videogioco semplice in Java: “Indovina il numero”. Funziona da terminale. Il computer sceglie un numero casuale, tu provi a indovinarlo.
Obiettivo del gioco
- Il computer genera un numero segreto tra 1 e 100
- Tu provi a indovinare
- Dopo ogni tentativo, il gioco ti dice se il numero è troppo alto, troppo basso, o giusto
Codice completo — IndovinaNumero.java
(Trovi una copia del codice anche qui su gdb compiler)
import java.util.Scanner;
import java.util.Random;
public class IndovinaNumero {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
Random rand = new Random();
int numeroSegreto = rand.nextInt(100) + 1; // numero da 1 a 100
int tentativi = 0;
boolean indovinato = false;
System.out.println("Benvenuto in 'Indovina il numero'!");
System.out.println("Ho scelto un numero tra 1 e 100. Riuscirai a trovarlo?");
System.out.println("Se vuoi arrenderti, scrivi 'mi arrendo'.");
while (!indovinato) {
System.out.print("Inserisci il tuo numero o 'mi arrendo': ");
String inputUtente = input.nextLine().trim();
if (inputUtente.equalsIgnoreCase("mi arrendo")) {
System.out.println("Hai scelto di arrenderti. Il numero segreto era: " + numeroSegreto);
break;
}
try {
int tentativo = Integer.parseInt(inputUtente);
tentativi++;
if (tentativo < numeroSegreto) { System.out.println("Troppo basso!"); } else if (tentativo > numeroSegreto) {
System.out.println("Troppo alto!");
} else {
System.out.println("✅ Complimenti! Hai indovinato in " + tentativi + " tentativi.");
indovinato = true;
}
} catch (NumberFormatException e) {
System.out.println("Input non valido! Inserisci un numero oppure 'mi arrendo'.");
}
}
input.close();
}
}
Il programma genera un numero segreto casuale da 1 a 100 e chiede all’utente di indovinare inserendo un numero o scrivendo “mi arrendo” per rinunciare.
Ad ogni input, letto come stringa, verifica se l’utente si arrende e in tal caso mostra il numero segreto e termina, altrimenti prova a convertire l’input in un numero intero, incrementa il contatore dei tentativi e confronta il tentativo con il numero segreto, dando indicazioni se è troppo basso o troppo alto, o congratulandosi se è esatto.
Se l’input non è né un numero valido né il comando di resa, il programma segnala un errore e richiede un nuovo tentativo, continuando il ciclo fino a indovinare o arrendersi.
▶️ Come eseguirlo
- Salva il file come
IndovinaNumero.java
- Compila:
javac IndovinaNumero.java
- Avvia:
java IndovinaNumero
Cosa puoi aggiungere dopo (opzionale)
- Difficoltà (facile = 1–50, difficile = 1–500)
- Limite di tentativi
- Giocare di nuovo alla fine
- Cronometro (con
System.currentTimeMillis()
)