From 7e1e6f6144ba88fd85504129caf6bc4e5f4de0c4 Mon Sep 17 00:00:00 2001 From: Andrea Manzi Date: Mon, 26 Oct 2026 16:39:22 +0100 Subject: [PATCH] =?UTF-8?q?Giochi=20di=20carte=20dopo=20la=20revisione=20d?= =?UTF-8?q?i=20Codex=20sui=20tre=20insieme;=20player=20dei=20video=20?= =?UTF-8?q?=C2=ABCome=20si=20gioca=C2=BB=20e=20primo=20copione?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Esito che vale e si salva appena deciso, per tutti i minigiochi (anche tornando al titolo dalla schermata del risultato); briscola: uscire durante il conteggio non perde più la vittoria; tressette: si esce ai 21 col primo evento che ci porta, accusa compresa (prima vinceva sempre Andrea se ci arrivavano tutte e due), il carico che fa vincere si dà anche se è il 2, accuse che non escono dal tavolo, convenzioni scritte nell'aiuto; scopa: primiera valutata per quel che migliora, finale esatto a mazzo finito, presa sulla tavola al rilascio con scelta e conferma, frecce e Invio sempre sulla presa scelta. Tastiera: Invio e Spazio giocano sempre la carta scelta. Tavola descritta a parole. Classi CSS comuni ai tre giochi. Video: player nel gioco (pulsante «Guarda il video» nel «Come si gioca», compare quando il video esiste), video/narra.py per la voce del narratore, pezzi comuni dei copioni e il copione della briscola; scaletta in video/SCALETTA-CARTE.md Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01A1dxvtsZx8NE9fwjXUNDBr --- assets/voices/andrea-6807209a9e.mp3 | Bin 0 -> 10316 bytes assets/voices/index.json | 10 ++- docs/BRISCOLA.md | 8 +++ docs/SCOPA.md | 20 ++++-- docs/TRESSETTE.md | 7 ++ index.html | 32 ++++++--- src/engine/briscola.js | 6 +- src/engine/game.js | 21 +++++- src/engine/scopa.js | 49 ++++++++++++-- src/engine/tressette-render.js | 5 +- src/engine/tressette.js | 40 +++++++---- src/main.js | 75 +++++++++++++++++---- src/story/story.js | 2 +- style.css | 31 +++++---- tests/briscola.browser.mjs | 2 +- tests/briscola.test.mjs | 26 ++++++- tests/scopa.browser.mjs | 8 ++- tests/scopa.test.mjs | 17 +++++ tests/tressette.browser.mjs | 6 ++ tests/tressette.test.mjs | 17 ++++- video/SCALETTA-CARTE.md | 58 ++++++++++++++++ video/narra.py | 50 ++++++++++++++ video/tutorial-briscola.mjs | 76 +++++++++++++++++++++ video/tutorial-comune.mjs | 101 ++++++++++++++++++++++++++++ 24 files changed, 594 insertions(+), 73 deletions(-) create mode 100644 assets/voices/andrea-6807209a9e.mp3 create mode 100644 video/SCALETTA-CARTE.md create mode 100644 video/narra.py create mode 100644 video/tutorial-briscola.mjs create mode 100644 video/tutorial-comune.mjs diff --git a/assets/voices/andrea-6807209a9e.mp3 b/assets/voices/andrea-6807209a9e.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..4ebdcd4da64019d590d47b8335e0f0b9327716ff GIT binary patch literal 10316 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 literal 0 HcmV?d00001 diff --git a/assets/voices/index.json b/assets/voices/index.json index 2320693..47589a6 100644 --- a/assets/voices/index.json +++ b/assets/voices/index.json @@ -1527,9 +1527,9 @@ "file": "andrea-d2f285f610.mp3", "sec": 1.04 }, - "andrea|La rivincita?": { - "file": "andrea-98e4366a56.mp3", - "sec": 0.83 + "andrea|Rivincita a briscola?": { + "file": "andrea-6807209a9e.mp3", + "sec": 1.37 }, "andrea|Una scopa?": { "file": "andrea-d8dfb86266.mp3", @@ -1899,6 +1899,10 @@ "file": "andrea-83b1337b4d.mp3", "sec": 3.31 }, + "andrea|La rivincita?": { + "file": "andrea-98e4366a56.mp3", + "sec": 0.83 + }, "andrea|Allora, Brento Sanico?": { "file": "andrea-2add39ff10.mp3", "sec": 1.29 diff --git a/docs/BRISCOLA.md b/docs/BRISCOLA.md index e9b0cd1..42da969 100644 --- a/docs/BRISCOLA.md +++ b/docs/BRISCOLA.md @@ -43,6 +43,14 @@ Andrea usa sempre `attentive`, l’euristica di riferimento; dà le carte 496 vo Queste percentuali misurano il confronto con quell’automatismo, non con giocatori umani. +## Revisione di Codex (26 ottobre, i tre giochi insieme) + +Regole promosse. Corretti: uscendo durante il conteggio si perdeva una vittoria già fatta (ora il risultato è +deciso all'ultima presa e il conteggio lo mostra soltanto) e, per tutti e tre i giochi, l'esito che non finiva +nel salvataggio se dal risultato si tornava al titolo; Spazio sui pulsanti come negli altri giochi; la briscola e +la carta in tavola dette anche a parole; l'aiuto coi nomi di tutti e due i mazzi; «Rivincita a briscola?». +Proposta non fatta: i seguiti campionati di «A fassi male» col finale esatto, e l'obiettivo vittoria invece dei punti. + ## Grafica e audio Due mazzi, scelti nel dialogo («Con le toscane» / «Con le napoletane»): stesse regole e stessi id, cambiano diff --git a/docs/SCOPA.md b/docs/SCOPA.md index 1965e02..d697b57 100644 --- a/docs/SCOPA.md +++ b/docs/SCOPA.md @@ -20,13 +20,23 @@ le napoletane (stessa scelta della briscola). Motore `src/engine/scopa.js` (Clau ## Avversari - «Alla bona»: una mossa a caso fra quelle possibili. -- «Seria»: sceglie la mossa che vale di più (settebello, sette, mattoni, primiera, scope) e teme a occhio di +- «Seria»: sceglie la mossa che vale di più (settebello, mattoni, carte, scope, e la primiera per quanto migliora la + propria: un 6 di un seme dove si ha solo una figura vale più di uno dove si ha già il 7) e teme a occhio di lasciare una scopa. -- «A fassi male»: come «Seria», ma conta le carte non viste per stimare se l'altro può fare scopa, e non lascia 7 - in tavola. +- «A fassi male»: come «Seria», ma conta le carte non viste per stimare se l'altro può fare scopa, non lascia 7 in + tavola e, a mazzo finito (le carte dell'altro sono proprio quelle non viste), calcola il finale esatto fino al + conteggio. -Taratura (`node tools/calibrate_scopa.mjs 300`, Andrea che gioca come «A fassi male»): Andrea vince 92% contro -«Alla bona», 64% contro «Seria», 52% contro «A fassi male»; circa quattro smazzate a partita. +Taratura (`node tools/calibrate_scopa.mjs 300`, Andrea che gioca come «A fassi male»): Andrea vince 96% contro +«Alla bona», 76% contro «Seria», 50% contro «A fassi male»; circa quattro smazzate a partita. + +## Revisione di Codex (26 ottobre, i tre giochi insieme) + +Regole promosse (valori, presa obbligatoria, precedenza della carta uguale, scopa non all'ultima, residui +all'ultimo, maggioranze e pari, primiera, re in tavola, agli 11). Corretti: frecce e Invio che potevano prendere la +presa sbagliata (ora il fuoco segue la scelta); il tocco sulla tavola che agiva alla pressione e non bastava con +prese sovrapposte (ora al rilascio: il primo tocco sceglie, il secondo conferma); primiera valutata a occhio; +finali sbagliati a mazzo finito; la tavola descritta a parole; aiuto con i valori della primiera e i pari. ## Prove diff --git a/docs/TRESSETTE.md b/docs/TRESSETTE.md index 807c644..7999ef1 100644 --- a/docs/TRESSETTE.md +++ b/docs/TRESSETTE.md @@ -48,6 +48,13 @@ riepilogo che ripartiva da solo dopo sette secondi; la tavola descritta a parole Restano proposte (non fatte): una tabella di tavolo accessibile completa e la taratura contro una versione precedente dell'IA. +Seconda revisione (i tre giochi insieme). Corretti: con le accuse tutte e due le coppie potevano arrivare ai 21 e +vinceva sempre Andrea (ora esce chi arriva per primo, anche con un'accusa, nel momento in cui la dice); il socio +che teneva il 2 anche quando caricarlo voleva dire vincere subito (l'IA vede ora punteggio e terzi del tabellone); +Invio su un pulsante che giocava la carta col fuoco invece di quella scelta; il pannello delle accuse che usciva +dal tavolo; le convenzioni del tavolo scritte anche nel «Come si gioca». Per tutti e tre i giochi l'esito vale e +si salva appena deciso (anche tornando al titolo dalla schermata del risultato). + ## Prove `npm test` (`tests/tressette.test.mjs`) e `npm run browser:tressette`: partita intera ai 21 col mouse, una smazzata diff --git a/index.html b/index.html index 1432bc5..3d93daf 100644 --- a/index.html +++ b/index.html @@ -86,6 +86,11 @@

La partita è salvata: dal titolo si riprende con «Continua». Con «Salva su file» la porti su un altro dispositivo e la apri con «Carica».

+