Java: il semplice videogame “Indovina il numero”

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

  1. Salva il file come IndovinaNumero.java
  2. Compila:
javac IndovinaNumero.java
  1. 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())