43 ⭐ Slot Machine 🎰

Obiettivi di apprendimento:

  • Simulazione di eventi casuali ponderati (uso di random.choice).
  • Implementazione della logica di vincita e del calcolo dei premi (uso di Dizionari per i moltiplicatori).
  • Gestione di un loop di gioco con saldo utente.

Programma Esempio:

import random

# Simboli e i loro moltiplicatori di vincita
SIMBOLI = {
    "🍒": 10,  # Ciliegia
    "🍊": 5,   # Arancia
    "⭐": 3,   # Stella
    "7": 25,    # Sette
    "💎": 50,   # Diamante
}

def genera_rulli(num_rulli=3):
    """Genera una riga di simboli casuali."""
    simboli_lista = list(SIMBOLI.keys())
    # Aumenta la probabilità di simboli più 'economici'
    simboli_probabilita = simboli_lista * 3 

    # Genera la riga estraendo casualmente dalla lista pesata
    rulli = [random.choice(simboli_probabilita) for _ in range(num_rulli)]
    return rulli

def controlla_vincita(rulli, puntata):
    """Controlla se ci sono tre simboli uguali (Jackpot)."""

    # Se tutti i simboli sono uguali
    if rulli[0] == rulli[1] == rulli[2]:
        simbolo_vincente = rulli[0]
        moltiplicatore = SIMBOLI[simbolo_vincente]
        vincita = puntata * moltiplicatore

        print("🎉🎉🎉 JACKPOT! 🎉🎉🎉")
        print(f"Hai vinto: {moltiplicatore}x la tua puntata!")
        return vincita

    return 0 # Nessuna vincita

def slot_machine():
    saldo = 100.00
    print("🎰 SLOT MACHINE 🎰")
    print(f"Simboli e premi: {SIMBOLI}")

    while saldo > 0:
        print(f"\nSaldo attuale: €{saldo:,.2f}")

        try:
            puntata = float(input("Inserisci la puntata (o 0 per uscire): "))

            if puntata == 0:
                break
            if puntata > saldo or puntata <= 0:
                print("❌ Puntata non valida o superiore al saldo.")
                continue

            saldo -= puntata

            rulli = genera_rulli(3)
            print("--- RULLI ---")
            print(f"| {' | '.join(rulli)} |")
            print("--------")

            vincita = controlla_vincita(rulli, puntata)

            if vincita > 0:
                saldo += vincita
                print(f"Hai vinto €{vincita:,.2f}!")
            else:
                print("Peccato, riprova! 🙁")

        except ValueError:
            print("❌ Inserimento non valido.")

    print(f"\nGame Over! Saldo finale: €{saldo:,.2f}")

# slot_machine()