71 lines
3.0 KiB
Markdown
71 lines
3.0 KiB
Markdown
# 🎰 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: **campioni reali stile slot** (whirr dei rulli nel
|
|
roll, jingle di vincita, sirena di jackpot, monete — in `sounds/`, royalty-free
|
|
[Mixkit](https://mixkit.co/free-sound-effects/slot-machine/)) con **fallback
|
|
sintetizzato** se i file non caricano (es. offline totale).
|
|
- **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 |
|
|
| `sounds/` | SFX reali stile slot (Mixkit, royalty-free): reel-spin, win, jackpot, coins |
|
|
| `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.
|
|
- **Gran finale** dedicato all'ultimo jackpot (ora tutti i jackpot sono uguali).
|