# 🎰 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.
**Nessun match (~30%):** ogni tanto i 3 rulli si fermano su stanze diverse →
effetto pazzo (sirena + strobo + glitch + timbro "NO MATCH"), le puntate del giro
vengono annullate e la persona **ri-tira** (senza avanzare). Max 2 no-match di fila.
## 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).