# 🎰 ELSA GAMBLING Web app (HTML + CSS + JS vanilla) che assegna le persone alle stanze con un **algoritmo di matching** e rivela il risultato come uno **show di scommesse / slot machine**: rulli che rallentano, near-miss, drumroll, coriandoli, jackpot sulle stanze con jacuzzi. ## Come avviare Basta aprire **`index.html`** in un browser (doppio click). **Funziona 100% offline**: librerie (three.js, canvas-confetti) e font sono in `vendor/`, nessuna dipendenza da internet — perfetto per un proiettore senza wifi. In alternativa, con un mini server locale: ```bash python3 -m http.server 8080 # poi apri http://localhost:8080 ``` ## Come si gioca - **START / SPINNA!** — rivela la persona successiva con un giro di slot. - **AUTO ▶** — rivela tutti in sequenza da solo (modalità proiettore). - **RE-ROLL 🎲** — rifà il sorteggio (nuova assegnazione). - **🔊** — on/off dei suoni (sintetizzati, nessun file audio). - **Scommesse** — prima di ogni giro clicca una stanza nel pannello a destra per puntare 10 gettoni; se indovini vinci in base alla quota. Contro di te giocano 3 scommettitori simulati (leaderboard live). I posti con **jacuzzi** (Argo, Eolo, "Quanto te la rischi") sono i jackpot e vengono rivelati per ultimi, con celebrazione extra. ## Regole del matching - Ogni stanza è **mono-genere** (M con M, F con F). - L'algoritmo partiziona le stanze tra i due generi rispettando le capienze, poi distribuisce le persone a caso senza lasciare stanze vuote. - Verificato su 5000 run: 0 violazioni del vincolo, nessuna stanza vuota. ## File | File | Ruolo | |------|-------| | `index.html` | Struttura + link CDN/font | | `styles.css` | Tema neon/casino | | `data.js` | Stanze e partecipanti (sorgente dati) | | `matching.js` | Algoritmo di assegnazione (testabile in Node) | | `app.js` | Motore reveal: rulli, audio, three.js, coriandoli, scommesse | | `vendor/` | Librerie e font in locale (three.js, canvas-confetti, woff2) — app offline | | `docs/` | Ricerca su stile gambling, suspense, interattività, implementazione | ## Dati attuali 16 persone (6 F / 10 M) · 8 stanze / 18 posti. Modifica `data.js` per cambiare nomi, generi o stanze — l'app si adatta da sola. ## Idee non ancora fatte (possibili evoluzioni) - **Scommesse multi-persona reali** dai telefoni (ora: singolo operatore + bot simulati). Servirebbe `BroadcastChannel` o un piccolo backend. - **SFX reali** al posto dei suoni sintetizzati. - **Gran finale** dedicato all'ultimo jackpot (ora tutti i jackpot sono uguali).