Mocard
Gioco di carte multiplayer locale (LAN)
Mocard è un gioco di carte a colori multiplayer locale, ispirato all'architettura di My Vote (server Ktor embedded + client tramite QR code). L'host avvia un server WebSocket sulla porta 8766, genera un QR e gli altri giocatori scansionano per unirsi. Tutte le regole sono configurabili dalle impostazioni: numero carte iniziali, accumulo +2/+4, dichiarazione "MONO", penalità, restrizioni speciali. Anche le immagini di OGNI carta sono sostituibili dalla galleria — separi il regolamento dalla grafica.
**Giochi multipli, salvataggio e import**. L'app gestisce più "Giochi", ognuno è un set autosufficiente di regole + catalogo carte + immagini personalizzate. Crei, duplichi, esporti e importi giochi a piacere; uno è marcato `default` ed è quello caricato automaticamente in Nuova Partita salvo override esplicito. L'export produce un file `.mocard` (zip con `manifest.json`, `game.json` e cartella `images/`, MIME `application/vnd.mocard.game+zip`, schema `mocard.game` versione 1) — lo passi a un altro giocatore via Drive/Telegram/USB e lui lo importa sul suo telefono ottenendo un Gioco identico al tuo.
**Mocard Configurator (tool desktop)**. App Python + Tkinter, eseguibile su Windows con doppio click sul `run.bat` (al primo avvio crea un venv locale e installa solo Pillow), oppure da terminale su macOS/Linux con `python main.py`. Apri un `.mocard` esportato dall'app, modifichi regole / configurazione mazzo / definizione carte, agganci immagini personalizzate dalla cartella del PC, e salvi un nuovo `.mocard` da reimportare sul telefono. Utile per preparare un set di carte completo prima di sederti a giocare, senza dover toccare lo smartphone.
Stack Android: Kotlin + Jetpack Compose, Ktor (server CIO + client + WebSockets), Gson, ZXing (QR), Coil (immagini), Room (storico partite + tabella `games`). Stack tool: Python 3.10+, Tkinter, Pillow.
Mocard Configurator
Editor desktop (Python + Tkinter) per pacchettizzare giochi `.mocard` da PC: apri uno zip esportato dall'app, modifichi regole / mazzo / carte / immagini, salvi un nuovo `.mocard` da reimportare sul telefono. Su Windows si avvia con doppio click su `run.bat`, su macOS/Linux con `python main.py`.
Funzionalità
- Giochi multipli salvati in-app: regole + catalogo carte + immagini, uno marcato default
- Export `.mocard`: pacchetto zip portabile con manifest, game.json e cartella images/
- Import `.mocard`: ricevi un Gioco da un altro telefono e lo carichi identico
- Tool desktop "Mocard Configurator" (Python + Tkinter): prepara un Gioco da PC, salva `.mocard`, reimporta in app
- Schema `mocard.game` v1, MIME `application/vnd.mocard.game+zip` (formato documentato e stabile)
- Server Ktor LAN embedded (host) — porta 8766
- QR join: il client scansiona, basta
- mDNS discovery del server sulla rete
- Regole completamente configurabili (carte iniziali, accumuli, MONO, ...)
- Immagini di OGNI carta personalizzabili dalla galleria
- Stato canonico solo sull'host, mani private sul singolo dispositivo
- Storico partite (Room)
- Foreground service per non perdere la connessione
Parametrizzazioni
- Gestione Giochi: crea / duplica / esporta `.mocard` / importa `.mocard` / segna come default
- Carte iniziali per giocatore (1–15)
- Frequenza carte speciali: bassa / media / alta
- Accumulo +2 su +2 / +4 su +4 / mix
- Penalità "MONO" dimenticato (numero carte)
- Restrizione +4 (giocabile solo se non hai il colore)
- Punteggio per vincere la partita
- Composizione mazzo (colori, range numeri, duplicati)
- Mocard Configurator: editor PC del catalogo carte e delle regole
Pre-requisiti tecnici
- Android 8.0+ (API 26)
- 2+ dispositivi sulla stessa rete Wi-Fi
- Permessi: Wi-Fi state, Camera (per QR), Photos (per immagini carte)
- ~80 MB di spazio
- Per il Configurator desktop: Python 3.10+ (Windows con `run.bat`, oppure macOS/Linux con `python main.py`)