45 ⭐ Hangman Game 🕺

Obiettivi di apprendimento:

  • Gestione del flusso di gioco (while loop).
  • Rappresentazione dello stato del gioco (stringa nascosta, lettere indovinate).
  • Uso di random.choice per selezionare la parola segreta.
  • Mantenere e visualizzare i tentativi rimanenti.

Programma Esempio:

import random

def hangman_game():
    print("🕺 GIOCO DELL'IMPICCATO 🕺")

    parole_segrete = ["PYTHON", "PROGRAMMAZIONE", "FUNZIONE", "VARIABILE", "MODULO"]
    parola_scelta = random.choice(parole_segrete).upper()

    # Inizializza la parola nascosta con trattini
    parola_nascosta = ["_" for _ in parola_scelta]

    tentativi_max = 7
    tentativi_rimasti = tentativi_max
    lettere_indovinate = set()

    while tentativi_rimasti > 0:

        # 1. Stato del gioco
        stato_nascosto = " ".join(parola_nascosta)
        print(f"\nParola: {stato_nascosto}")
        print(f"Tentativi rimasti: {tentativi_rimasti}")
        print(f"Lettere usate: {sorted(list(lettere_indovinate))}")

        if "_" not in parola_nascosta:
            print("\n🎉 HAI VINTO! Hai indovinato la parola.")
            break

        # 2. Input utente
        try:
            tentativo = input("Indovina una lettera: ").upper().strip()

            if len(tentativo) != 1 or not tentativo.isalpha():
                print("❌ Inserisci una singola lettera valida.")
                continue

            if tentativo in lettere_indovinate:
                print("⚠️ Hai già provato questa lettera.")
                continue

            lettere_indovinate.add(tentativo)

            # 3. Controllo
            if tentativo in parola_scelta:
                print("✅ Lettera corretta!")

                # Riscopri le lettere nella parola nascosta
                for i, lettera in enumerate(parola_scelta):
                    if lettera == tentativo:
                        parola_nascosta[i] = tentativo
            else:
                tentativi_rimasti -= 1
                print("❌ Lettera errata!")

        except Exception:
            print("Errore nell'input.")

    # 4. Fine del gioco
    else: # Eseguito se il loop termina per tentativi_rimasti == 0
        print("\n💀 HAI PERSO!")
        print(f"La parola segreta era: {parola_scelta}")

# hangman_game()