Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
fef236dc54 | ||
|
|
c82bef70b2 | ||
|
|
e9907e3e66 | ||
|
|
92e7a289be | ||
|
|
2362fc7741 | ||
|
|
2dd4257fd4 | ||
|
|
d51f5e56ea | ||
|
|
7b7e0031d1 | ||
|
|
94e9da4009 | ||
|
|
bd66ea45ad | ||
|
|
9eabd5c6e1 | ||
|
|
ddc877a2d1 | ||
|
|
14a1e6e5b8 | ||
|
|
49bdfb313a | ||
|
|
416b9d46ef | ||
|
|
7476c84b76 | ||
|
|
053728a086 | ||
|
|
394e8bdde3 | ||
|
|
ca56a9df17 | ||
|
|
b0b2fc0ed3 | ||
|
|
f56c9b5358 | ||
|
|
70f328c56d | ||
|
|
0a0bb7eea4 | ||
|
|
16759006b1 |
@@ -47,6 +47,11 @@ Si possono usare anche le frecce, oppure Invio per cercare il prossimo dettaglio
|
|||||||
riprovare; dopo il ritrovamento, «Continua» conclude il capitolo.
|
riprovare; dopo il ritrovamento, «Continua» conclude il capitolo.
|
||||||
Il volume dei suoni ambientali e del fruscio delle pagine si regola in **Pausa → Ambiente ed effetti**.
|
Il volume dei suoni ambientali e del fruscio delle pagine si regola in **Pausa → Ambiente ed effetti**.
|
||||||
|
|
||||||
|
Al biliardo del Circolo 4 Maggio, clic o tocco fissa la mira; regola la forza e premi **Tira**.
|
||||||
|
Le frecce ← → affinano la direzione, con Maiusc per passi ancora più piccoli. La guida usa la stessa fisica
|
||||||
|
del tiro: mostra sponde, primo contatto e direzioni iniziali dopo l'urto (azzurro per l'avversaria, giallo
|
||||||
|
per la propria biglia). Tenendo premuto sul tavolo o Spazio si carica il colpo, con la mira bloccata.
|
||||||
|
|
||||||
## In Docker
|
## In Docker
|
||||||
|
|
||||||
```zsh
|
```zsh
|
||||||
@@ -71,5 +76,6 @@ npm test # logica, storia coerente, soluzione percorsa dall'inizio alla
|
|||||||
npm install && npx playwright install chromium-headless-shell
|
npm install && npx playwright install chromium-headless-shell
|
||||||
npm run browser # partita completa con clic veri in Chromium, salvataggio, telefono
|
npm run browser # partita completa con clic veri in Chromium, salvataggio, telefono
|
||||||
npm run browser -- --media-only # libro, torcia e audio: controllo mirato desktop/telefono
|
npm run browser -- --media-only # libro, torcia e audio: controllo mirato desktop/telefono
|
||||||
|
npm run browser:biliardo # mira e tiro con mouse/touch, desktop e telefono; schermate in /tmp/regolo-biliardo
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|||||||
Binary file not shown.
@@ -0,0 +1,38 @@
|
|||||||
|
{
|
||||||
|
"image": "giocatore-carte.png",
|
||||||
|
"height": 100,
|
||||||
|
"frames": {
|
||||||
|
"sit": {
|
||||||
|
"x": 0,
|
||||||
|
"y": 0,
|
||||||
|
"w": 67,
|
||||||
|
"h": 100,
|
||||||
|
"ax": 25.7,
|
||||||
|
"ay": 100
|
||||||
|
},
|
||||||
|
"talk": {
|
||||||
|
"x": 69,
|
||||||
|
"y": 0,
|
||||||
|
"w": 68,
|
||||||
|
"h": 100,
|
||||||
|
"ax": 27.6,
|
||||||
|
"ay": 100
|
||||||
|
},
|
||||||
|
"laugh": {
|
||||||
|
"x": 139,
|
||||||
|
"y": 0,
|
||||||
|
"w": 72,
|
||||||
|
"h": 99,
|
||||||
|
"ax": 19.3,
|
||||||
|
"ay": 99
|
||||||
|
},
|
||||||
|
"shuffle": {
|
||||||
|
"x": 213,
|
||||||
|
"y": 0,
|
||||||
|
"w": 67,
|
||||||
|
"h": 97,
|
||||||
|
"ax": 25.2,
|
||||||
|
"ay": 97
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 45 KiB |
@@ -0,0 +1,70 @@
|
|||||||
|
{
|
||||||
|
"image": "ing-tozzi.png",
|
||||||
|
"height": 120,
|
||||||
|
"frames": {
|
||||||
|
"stand": {
|
||||||
|
"x": 0,
|
||||||
|
"y": 0,
|
||||||
|
"w": 53,
|
||||||
|
"h": 120,
|
||||||
|
"ax": 27.9,
|
||||||
|
"ay": 120
|
||||||
|
},
|
||||||
|
"blink": {
|
||||||
|
"x": 55,
|
||||||
|
"y": 0,
|
||||||
|
"w": 54,
|
||||||
|
"h": 120,
|
||||||
|
"ax": 27.8,
|
||||||
|
"ay": 120
|
||||||
|
},
|
||||||
|
"talk": {
|
||||||
|
"x": 111,
|
||||||
|
"y": 0,
|
||||||
|
"w": 77,
|
||||||
|
"h": 119,
|
||||||
|
"ax": 29.9,
|
||||||
|
"ay": 119
|
||||||
|
},
|
||||||
|
"explain": {
|
||||||
|
"x": 190,
|
||||||
|
"y": 0,
|
||||||
|
"w": 58,
|
||||||
|
"h": 119,
|
||||||
|
"ax": 30.8,
|
||||||
|
"ay": 119
|
||||||
|
},
|
||||||
|
"laugh": {
|
||||||
|
"x": 250,
|
||||||
|
"y": 0,
|
||||||
|
"w": 53,
|
||||||
|
"h": 119,
|
||||||
|
"ax": 28.2,
|
||||||
|
"ay": 119
|
||||||
|
},
|
||||||
|
"chalk": {
|
||||||
|
"x": 305,
|
||||||
|
"y": 0,
|
||||||
|
"w": 52,
|
||||||
|
"h": 119,
|
||||||
|
"ax": 24.1,
|
||||||
|
"ay": 119
|
||||||
|
},
|
||||||
|
"shrug": {
|
||||||
|
"x": 359,
|
||||||
|
"y": 0,
|
||||||
|
"w": 87,
|
||||||
|
"h": 120,
|
||||||
|
"ax": 43.9,
|
||||||
|
"ay": 120
|
||||||
|
},
|
||||||
|
"cheer": {
|
||||||
|
"x": 448,
|
||||||
|
"y": 0,
|
||||||
|
"w": 56,
|
||||||
|
"h": 123,
|
||||||
|
"ax": 30.9,
|
||||||
|
"ay": 123
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 102 KiB |
@@ -0,0 +1,22 @@
|
|||||||
|
{
|
||||||
|
"image": "macchina-tempo.png",
|
||||||
|
"height": 158,
|
||||||
|
"frames": {
|
||||||
|
"stand": {
|
||||||
|
"x": 0,
|
||||||
|
"y": 0,
|
||||||
|
"w": 361,
|
||||||
|
"h": 158,
|
||||||
|
"ax": 180,
|
||||||
|
"ay": 152
|
||||||
|
},
|
||||||
|
"talk": {
|
||||||
|
"x": 0,
|
||||||
|
"y": 0,
|
||||||
|
"w": 361,
|
||||||
|
"h": 158,
|
||||||
|
"ax": 180,
|
||||||
|
"ay": 152
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 91 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 1.7 MiB |
Binary file not shown.
|
After Width: | Height: | Size: 143 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 4.2 KiB |
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+338
-10
@@ -47,6 +47,26 @@
|
|||||||
"file": "andrea-dacb32e5c6.mp3",
|
"file": "andrea-dacb32e5c6.mp3",
|
||||||
"sec": 4.01
|
"sec": 4.01
|
||||||
},
|
},
|
||||||
|
"andrea|La Torre dello Scoronconcolo. Era una vecchia torre di guardia, già in disuso nel Cinquecento.": {
|
||||||
|
"file": "andrea-536c525f5c.mp3",
|
||||||
|
"sec": 6.64
|
||||||
|
},
|
||||||
|
"andrea|Ci si rifugiò Michele del Tavolaccino, detto Scoronconcolo, sanpierino: nel 1537 aiutò Lorenzino de' Medici ad ammazzare il duca Alessandro.": {
|
||||||
|
"file": "andrea-37eaf3e803.mp3",
|
||||||
|
"sec": 11.82
|
||||||
|
},
|
||||||
|
"andrea|Nel 1539 finì sulle galere dell'ordine gerosolimitano, in guerra contro i Turchi. Altro che Palio.": {
|
||||||
|
"file": "andrea-5f4c4fca29.mp3",
|
||||||
|
"sec": 8.04
|
||||||
|
},
|
||||||
|
"andrea|Da quassù non ci arrivo. E poi, di nascondigli in quella torre, ce n'è già stato uno di troppo.": {
|
||||||
|
"file": "andrea-f60ba3ee31.mp3",
|
||||||
|
"sec": 7.38
|
||||||
|
},
|
||||||
|
"andrea|Una torre in tasca? Nemmeno lo Scoronconcolo ci è riuscito.": {
|
||||||
|
"file": "andrea-938fbd1326.mp3",
|
||||||
|
"sec": 4.59
|
||||||
|
},
|
||||||
"andrea|Il bar della piazza. Chi c'era dietro il bancone nel 2007? Questo lo sa solo Andrea.": {
|
"andrea|Il bar della piazza. Chi c'era dietro il bancone nel 2007? Questo lo sa solo Andrea.": {
|
||||||
"file": "andrea-4b733def4f.mp3",
|
"file": "andrea-4b733def4f.mp3",
|
||||||
"sec": 7.27
|
"sec": 7.27
|
||||||
@@ -75,6 +95,14 @@
|
|||||||
"file": "andrea-a9df2e6bbb.mp3",
|
"file": "andrea-a9df2e6bbb.mp3",
|
||||||
"sec": 4.98
|
"sec": 4.98
|
||||||
},
|
},
|
||||||
|
"andrea|Il Circolo 4 Maggio. Dentro, dietro il bar, la sala dei biliardi: tre tavoli e il silenzio delle grandi occasioni.": {
|
||||||
|
"file": "andrea-f0aef83c80.mp3",
|
||||||
|
"sec": 9.43
|
||||||
|
},
|
||||||
|
"andrea|Da fuori non si parla con nessuno: al circolo si entra.": {
|
||||||
|
"file": "andrea-0e0e42a1cd.mp3",
|
||||||
|
"sec": 3.69
|
||||||
|
},
|
||||||
"andrea|Il programma del Palio della Fortezza, con la foto del palio: la strada bianca che sale alla Fortezza, i ragazzi in fila, e uno con la maglia rossa che alza le braccia.": {
|
"andrea|Il programma del Palio della Fortezza, con la foto del palio: la strada bianca che sale alla Fortezza, i ragazzi in fila, e uno con la maglia rossa che alza le braccia.": {
|
||||||
"file": "andrea-6cc844498a.mp3",
|
"file": "andrea-6cc844498a.mp3",
|
||||||
"sec": 10.59
|
"sec": 10.59
|
||||||
@@ -279,6 +307,26 @@
|
|||||||
"file": "andrea-68a845881b.mp3",
|
"file": "andrea-68a845881b.mp3",
|
||||||
"sec": 1.94
|
"sec": 1.94
|
||||||
},
|
},
|
||||||
|
"andrea|Fra Peppino da Gricignano, col saio e i sandali. Sul sagrato sembra nato lì.": {
|
||||||
|
"file": "andrea-97d75e2a9d.mp3",
|
||||||
|
"sec": 5.38
|
||||||
|
},
|
||||||
|
"andrea|Buongiorno, Fra Peppino!": {
|
||||||
|
"file": "andrea-94988dc8c6.mp3",
|
||||||
|
"sec": 1.74
|
||||||
|
},
|
||||||
|
"fra_peppino|Pace e bene, figliolo. Cerchi qualcosa?": {
|
||||||
|
"file": "fra_peppino-651c4d95ab.mp3",
|
||||||
|
"sec": 3.72
|
||||||
|
},
|
||||||
|
"andrea|Il palio. È sparito.": {
|
||||||
|
"file": "andrea-c9c068f507.mp3",
|
||||||
|
"sec": 2.39
|
||||||
|
},
|
||||||
|
"fra_peppino|Le cose sparite, prima o poi, tornano. Come le pecorelle.": {
|
||||||
|
"file": "fra_peppino-8b3d0a5b8f.mp3",
|
||||||
|
"sec": 4.47
|
||||||
|
},
|
||||||
"andrea|La Pieve di San Pietro. Il mio rione: noi bianchi.": {
|
"andrea|La Pieve di San Pietro. Il mio rione: noi bianchi.": {
|
||||||
"file": "andrea-43fd5c2b27.mp3",
|
"file": "andrea-43fd5c2b27.mp3",
|
||||||
"sec": 4.46
|
"sec": 4.46
|
||||||
@@ -439,6 +487,10 @@
|
|||||||
"file": "andrea-f798fa755d.mp3",
|
"file": "andrea-f798fa755d.mp3",
|
||||||
"sec": 4.9
|
"sec": 4.9
|
||||||
},
|
},
|
||||||
|
"andrea|Ha già mescolato. Mi sa che aspettava proprio un pollo di passaggio.": {
|
||||||
|
"file": "andrea-71f3bff8a0.mp3",
|
||||||
|
"sec": 5.09
|
||||||
|
},
|
||||||
"andrea|Una gomma da masticare ancora incartata, persa davanti al palco. Qualcuno ha perso l'appetito.": {
|
"andrea|Una gomma da masticare ancora incartata, persa davanti al palco. Qualcuno ha perso l'appetito.": {
|
||||||
"file": "andrea-f2ea95922d.mp3",
|
"file": "andrea-f2ea95922d.mp3",
|
||||||
"sec": 6.54
|
"sec": 6.54
|
||||||
@@ -615,9 +667,65 @@
|
|||||||
"file": "andrea-d193b44288.mp3",
|
"file": "andrea-d193b44288.mp3",
|
||||||
"sec": 3.65
|
"sec": 3.65
|
||||||
},
|
},
|
||||||
"andrea|Il tabernacolo prima del ponte. Chi passa per andare via dal paese, un saluto glielo fa sempre.": {
|
"andrea|La sala dei biliardi. Qui dentro si parla piano, e si gioca forte.": {
|
||||||
"file": "andrea-78a5ef65f0.mp3",
|
"file": "andrea-0268742faf.mp3",
|
||||||
"sec": 7.84
|
"sec": 5.45
|
||||||
|
},
|
||||||
|
"andrea|Il primo tavolo: il panno verde, il castello di birilli in mezzo, le biglie già pronte.": {
|
||||||
|
"file": "andrea-015dc16c6d.mp3",
|
||||||
|
"sec": 5.51
|
||||||
|
},
|
||||||
|
"andrea|L'Ing. Tozzi gli gira intorno con la stecca in mano, come se aspettasse qualcuno.": {
|
||||||
|
"file": "andrea-2d04be65fb.mp3",
|
||||||
|
"sec": 5.97
|
||||||
|
},
|
||||||
|
"andrea|Il tavolo è dell'Ingegnere: prima gli chiedo una partita.": {
|
||||||
|
"file": "andrea-c43b158842.mp3",
|
||||||
|
"sec": 3.27
|
||||||
|
},
|
||||||
|
"ing_tozzi|Si parla col panno, qui. Prendi la stecca.": {
|
||||||
|
"file": "ing_tozzi-4814e97759.mp3",
|
||||||
|
"sec": 3.36
|
||||||
|
},
|
||||||
|
"andrea|Una biglia in tasca? Mi sbattono fuori dal circolo.": {
|
||||||
|
"file": "andrea-98b3e4a969.mp3",
|
||||||
|
"sec": 3.49
|
||||||
|
},
|
||||||
|
"andrea|L'Ing. Tozzi, il campione del circolo. Occhiali scuri anche al chiuso: dice che così non vede le biglie degli altri.": {
|
||||||
|
"file": "andrea-127a90af53.mp3",
|
||||||
|
"sec": 9.37
|
||||||
|
},
|
||||||
|
"andrea|Le stecche del circolo, in fila. Ognuna ha il suo proprietario, e guai a sbagliare.": {
|
||||||
|
"file": "andrea-1eae1a8577.mp3",
|
||||||
|
"sec": 6.1
|
||||||
|
},
|
||||||
|
"andrea|La stecca me la dà l'Ingegnere, quando si gioca.": {
|
||||||
|
"file": "andrea-e393f0bc2a.mp3",
|
||||||
|
"sec": 2.83
|
||||||
|
},
|
||||||
|
"andrea|Un campione di biliardo in posa, con la stecca. Avrà il suo nome, ma da qui non si legge.": {
|
||||||
|
"file": "andrea-4a03e51d2c.mp3",
|
||||||
|
"sec": 7.65
|
||||||
|
},
|
||||||
|
"andrea|L'armadietto a vetri, con le stecche buone. Chiuso a chiave, naturalmente.": {
|
||||||
|
"file": "andrea-b1ba7d3072.mp3",
|
||||||
|
"sec": 5.06
|
||||||
|
},
|
||||||
|
"andrea|Chiuso. Le stecche buone sono per chi le sa usare.": {
|
||||||
|
"file": "andrea-bd95e65b0a.mp3",
|
||||||
|
"sec": 4.77
|
||||||
|
},
|
||||||
|
"andrea|Il tabernacolo del ponte, con l'Annunciazione di Antonio Berti, scultore sanpierino.": {
|
||||||
|
"file": "andrea-9c0935dc77.mp3",
|
||||||
|
"sec": 5.48
|
||||||
|
},
|
||||||
|
"andrea|Questa è una copia: l'originale lo fece nel 1947. Lo stesso Berti del parco dell'area feste.": {
|
||||||
|
"file": "andrea-902c4db19c.mp3",
|
||||||
|
"sec": 8.21
|
||||||
|
},
|
||||||
|
"andrea|Chi passa per andare via dal paese, un saluto glielo fa sempre.": {
|
||||||
|
"file": "andrea-6eeaab479b.mp3",
|
||||||
|
"sec": 4.03
|
||||||
},
|
},
|
||||||
"andrea|Sotto il ponte la Carza si butta nella Sieve, e da qui vanno avanti insieme.": {
|
"andrea|Sotto il ponte la Carza si butta nella Sieve, e da qui vanno avanti insieme.": {
|
||||||
"file": "andrea-f322731846.mp3",
|
"file": "andrea-f322731846.mp3",
|
||||||
@@ -655,6 +763,42 @@
|
|||||||
"file": "andrea-e47b3cebb5.mp3",
|
"file": "andrea-e47b3cebb5.mp3",
|
||||||
"sec": 4.87
|
"sec": 4.87
|
||||||
},
|
},
|
||||||
|
"andrea|Voglio giocare a padel!": {
|
||||||
|
"file": "andrea-808f67b99f.mp3",
|
||||||
|
"sec": 1.4
|
||||||
|
},
|
||||||
|
"andrea|Toh, guarda: c'è una macchina del tempo.": {
|
||||||
|
"file": "andrea-1f686a5d7c.mp3",
|
||||||
|
"sec": 3.2
|
||||||
|
},
|
||||||
|
"andrea|Per arrivare al padel mi manca solo un po' di plutonio. Potrei sentire da Alvarino se ce l'ha.": {
|
||||||
|
"file": "andrea-299c0c38d6.mp3",
|
||||||
|
"sec": 6.03
|
||||||
|
},
|
||||||
|
"andrea|Il padel aspetta. Prima il plutonio: devo sentire Alvarino.": {
|
||||||
|
"file": "andrea-9f70e8b68e.mp3",
|
||||||
|
"sec": 5.03
|
||||||
|
},
|
||||||
|
"andrea|Acciaio, portiere ad ali di gabbiano, cavi e bobine dappertutto. E un contenitore vuoto, sul retro.": {
|
||||||
|
"file": "andrea-122877af14.mp3",
|
||||||
|
"sec": 7.99
|
||||||
|
},
|
||||||
|
"andrea|Vuoto di plutonio, si capisce.": {
|
||||||
|
"file": "andrea-1cb9f950ca.mp3",
|
||||||
|
"sec": 2.41
|
||||||
|
},
|
||||||
|
"andrea|Le portiere sono già su. È il plutonio che manca.": {
|
||||||
|
"file": "andrea-c1db806968.mp3",
|
||||||
|
"sec": 4.01
|
||||||
|
},
|
||||||
|
"andrea|Senza plutonio non parte. Alvarino, dove sei?": {
|
||||||
|
"file": "andrea-8f9dcb0bb1.mp3",
|
||||||
|
"sec": 3.71
|
||||||
|
},
|
||||||
|
"andrea|Una macchina in tasca? Neanche nel futuro.": {
|
||||||
|
"file": "andrea-cac0c82f01.mp3",
|
||||||
|
"sec": 3.06
|
||||||
|
},
|
||||||
"barondeduke|Me la giochi? Ho un sette e un due, ma un sacco di fiducia.": {
|
"barondeduke|Me la giochi? Ho un sette e un due, ma un sacco di fiducia.": {
|
||||||
"file": "barondeduke-52184c7c05.mp3",
|
"file": "barondeduke-52184c7c05.mp3",
|
||||||
"sec": 5.58
|
"sec": 5.58
|
||||||
@@ -1379,6 +1523,70 @@
|
|||||||
"file": "andrea-60cdae2e35.mp3",
|
"file": "andrea-60cdae2e35.mp3",
|
||||||
"sec": 5.1
|
"sec": 5.1
|
||||||
},
|
},
|
||||||
|
"andrea|Una briscola?": {
|
||||||
|
"file": "andrea-d2f285f610.mp3",
|
||||||
|
"sec": 1.04
|
||||||
|
},
|
||||||
|
"andrea|La rivincita?": {
|
||||||
|
"file": "andrea-98e4366a56.mp3",
|
||||||
|
"sec": 0.83
|
||||||
|
},
|
||||||
|
"andrea|Ora cerco il palio. A dopo.": {
|
||||||
|
"file": "andrea-6e63dafda1.mp3",
|
||||||
|
"sec": 2.61
|
||||||
|
},
|
||||||
|
"giocatore_carte|Gnamo. In due, senza soci e senza scuse.": {
|
||||||
|
"file": "giocatore_carte-1523994a6c.mp3",
|
||||||
|
"sec": 3.78
|
||||||
|
},
|
||||||
|
"giocatore_carte|Il tavolo è qui. Il coraggio ce lo metti te.": {
|
||||||
|
"file": "giocatore_carte-8dfadb4acc.mp3",
|
||||||
|
"sec": 3.4
|
||||||
|
},
|
||||||
|
"andrea|Con le toscane.": {
|
||||||
|
"file": "andrea-e8599cc8b6.mp3",
|
||||||
|
"sec": 1.03
|
||||||
|
},
|
||||||
|
"andrea|Con le napoletane.": {
|
||||||
|
"file": "andrea-be276497e3.mp3",
|
||||||
|
"sec": 1.09
|
||||||
|
},
|
||||||
|
"andrea|Ci ripenso.": {
|
||||||
|
"file": "andrea-b851b9ed26.mp3",
|
||||||
|
"sec": 0.8
|
||||||
|
},
|
||||||
|
"giocatore_carte|Brao. Gobbo, donna e regio, come Dio comanda. Come la vuoi?": {
|
||||||
|
"file": "giocatore_carte-89686f55a0.mp3",
|
||||||
|
"sec": 6.14
|
||||||
|
},
|
||||||
|
"giocatore_carte|Le napoletane? Le tengo per i villeggianti. Come la vuoi?": {
|
||||||
|
"file": "giocatore_carte-4f39bc172d.mp3",
|
||||||
|
"sec": 5.13
|
||||||
|
},
|
||||||
|
"andrea|Alla bona.": {
|
||||||
|
"file": "andrea-67afa54e05.mp3",
|
||||||
|
"sec": 0.69
|
||||||
|
},
|
||||||
|
"andrea|Seria.": {
|
||||||
|
"file": "andrea-f6ef96032e.mp3",
|
||||||
|
"sec": 0.58
|
||||||
|
},
|
||||||
|
"andrea|A fassi male.": {
|
||||||
|
"file": "andrea-f52137b691.mp3",
|
||||||
|
"sec": 0.78
|
||||||
|
},
|
||||||
|
"giocatore_carte|Alla bona. I carichi li regalo, oggi.": {
|
||||||
|
"file": "giocatore_carte-43e76cf11b.mp3",
|
||||||
|
"sec": 3.43
|
||||||
|
},
|
||||||
|
"giocatore_carte|Allora posa il gomito e guarda le carte.": {
|
||||||
|
"file": "giocatore_carte-f1f219bd1c.mp3",
|
||||||
|
"sec": 2.51
|
||||||
|
},
|
||||||
|
"giocatore_carte|Io le conto tutte. Anche quelle che butti via per sbaglio.": {
|
||||||
|
"file": "giocatore_carte-12f97003ec.mp3",
|
||||||
|
"sec": 4.19
|
||||||
|
},
|
||||||
"andrea|Una Fanta.": {
|
"andrea|Una Fanta.": {
|
||||||
"file": "andrea-8927b87738.mp3",
|
"file": "andrea-8927b87738.mp3",
|
||||||
"sec": 0.65
|
"sec": 0.65
|
||||||
@@ -1619,6 +1827,10 @@
|
|||||||
"file": "andrea-06f5050907.mp3",
|
"file": "andrea-06f5050907.mp3",
|
||||||
"sec": 1.24
|
"sec": 1.24
|
||||||
},
|
},
|
||||||
|
"andrea|S'ha andà a fallo!?!?": {
|
||||||
|
"file": "andrea-b25aeefc97.mp3",
|
||||||
|
"sec": 1.16
|
||||||
|
},
|
||||||
"andrea|Ci si becca da i' Trappola, ai' Barrettino!": {
|
"andrea|Ci si becca da i' Trappola, ai' Barrettino!": {
|
||||||
"file": "andrea-fca6f59a70.mp3",
|
"file": "andrea-fca6f59a70.mp3",
|
||||||
"sec": 3.41
|
"sec": 3.41
|
||||||
@@ -1663,14 +1875,14 @@
|
|||||||
"file": "arcu-5148dffe36.mp3",
|
"file": "arcu-5148dffe36.mp3",
|
||||||
"sec": 1.7
|
"sec": 1.7
|
||||||
},
|
},
|
||||||
|
"arcu|Gnamo! Ma prima mi fo una segarettina di quelle mi fo io!": {
|
||||||
|
"file": "arcu-406cd02197.mp3",
|
||||||
|
"sec": 4.46
|
||||||
|
},
|
||||||
"andrea|Mariano! Facciamo una partita a bocce?": {
|
"andrea|Mariano! Facciamo una partita a bocce?": {
|
||||||
"file": "andrea-83b1337b4d.mp3",
|
"file": "andrea-83b1337b4d.mp3",
|
||||||
"sec": 3.31
|
"sec": 3.31
|
||||||
},
|
},
|
||||||
"andrea|La rivincita?": {
|
|
||||||
"file": "andrea-98e4366a56.mp3",
|
|
||||||
"sec": 0.83
|
|
||||||
},
|
|
||||||
"andrea|Allora, Brento Sanico?": {
|
"andrea|Allora, Brento Sanico?": {
|
||||||
"file": "andrea-2add39ff10.mp3",
|
"file": "andrea-2add39ff10.mp3",
|
||||||
"sec": 1.29
|
"sec": 1.29
|
||||||
@@ -1687,14 +1899,62 @@
|
|||||||
"file": "mariano-0eeb942ca2.mp3",
|
"file": "mariano-0eeb942ca2.mp3",
|
||||||
"sec": 3.52
|
"sec": 3.52
|
||||||
},
|
},
|
||||||
"mariano|Il campione non scappa. Tira!": {
|
"mariano|Come la vuoi?": {
|
||||||
"file": "mariano-bdf58ba1be.mp3",
|
"file": "mariano-0288ec460b.mp3",
|
||||||
"sec": 3.26
|
"sec": 0.7
|
||||||
|
},
|
||||||
|
"mariano|Il campione non scappa. Come la vuoi?": {
|
||||||
|
"file": "mariano-1d8388d631.mp3",
|
||||||
|
"sec": 3.55
|
||||||
},
|
},
|
||||||
"mariano|Promesso: ti ci porto. Ma prima ritrova il palio, che senza festa non si parte.": {
|
"mariano|Promesso: ti ci porto. Ma prima ritrova il palio, che senza festa non si parte.": {
|
||||||
"file": "mariano-1c9cd0c325.mp3",
|
"file": "mariano-1c9cd0c325.mp3",
|
||||||
"sec": 5.96
|
"sec": 5.96
|
||||||
},
|
},
|
||||||
|
"mariano|Alla bona: tiro con gli occhi chiusi.": {
|
||||||
|
"file": "mariano-b1b1ca273b.mp3",
|
||||||
|
"sec": 2.2
|
||||||
|
},
|
||||||
|
"mariano|Seria. Così mi piace.": {
|
||||||
|
"file": "mariano-accff65835.mp3",
|
||||||
|
"sec": 2.27
|
||||||
|
},
|
||||||
|
"mariano|A fassi male? Poi non piangere, eh.": {
|
||||||
|
"file": "mariano-d65fb6e871.mp3",
|
||||||
|
"sec": 3.42
|
||||||
|
},
|
||||||
|
"andrea|Ingegnere, una partita ai birilli?": {
|
||||||
|
"file": "andrea-dbcf4d1083.mp3",
|
||||||
|
"sec": 2.49
|
||||||
|
},
|
||||||
|
"andrea|Arrivederci, Ingegnere.": {
|
||||||
|
"file": "andrea-8f63435d69.mp3",
|
||||||
|
"sec": 1.38
|
||||||
|
},
|
||||||
|
"ing_tozzi|Una partita ai birilli? Si va a venti. Come la vuoi?": {
|
||||||
|
"file": "ing_tozzi-82e7cc88aa.mp3",
|
||||||
|
"sec": 4.58
|
||||||
|
},
|
||||||
|
"ing_tozzi|Ci mancherebbe. Stavolta guardo bene. Come la vuoi?": {
|
||||||
|
"file": "ing_tozzi-344ac1021f.mp3",
|
||||||
|
"sec": 4.67
|
||||||
|
},
|
||||||
|
"ing_tozzi|Alla bona: tiro senza occhiali.": {
|
||||||
|
"file": "ing_tozzi-17e489814e.mp3",
|
||||||
|
"sec": 2.19
|
||||||
|
},
|
||||||
|
"andrea|Gnamo.": {
|
||||||
|
"file": "andrea-a496b0aca9.mp3",
|
||||||
|
"sec": 0.58
|
||||||
|
},
|
||||||
|
"ing_tozzi|Seria. Dammi il gesso.": {
|
||||||
|
"file": "ing_tozzi-4b3adfa04a.mp3",
|
||||||
|
"sec": 2.28
|
||||||
|
},
|
||||||
|
"ing_tozzi|A fassi male? Allora mi tolgo la giacca. Ah no, non ce l'ho.": {
|
||||||
|
"file": "ing_tozzi-c365e9f760.mp3",
|
||||||
|
"sec": 6.05
|
||||||
|
},
|
||||||
"andrea|Sono bloccato. Mi dai un consiglio?": {
|
"andrea|Sono bloccato. Mi dai un consiglio?": {
|
||||||
"file": "andrea-42b02eb9ea.mp3",
|
"file": "andrea-42b02eb9ea.mp3",
|
||||||
"sec": 3.9
|
"sec": 3.9
|
||||||
@@ -1703,6 +1963,14 @@
|
|||||||
"file": "andrea-01d1ccb933.mp3",
|
"file": "andrea-01d1ccb933.mp3",
|
||||||
"sec": 2.09
|
"sec": 2.09
|
||||||
},
|
},
|
||||||
|
"andrea|Lo sai che quassù ci vengo sempre a piedi?": {
|
||||||
|
"file": "andrea-fc4233b1e9.mp3",
|
||||||
|
"sec": 2.82
|
||||||
|
},
|
||||||
|
"andrea|E te, da grande, cosa volevi fare?": {
|
||||||
|
"file": "andrea-3aacdf79ee.mp3",
|
||||||
|
"sec": 2.8
|
||||||
|
},
|
||||||
"andrea|Niente, volevo solo un po' di pace.": {
|
"andrea|Niente, volevo solo un po' di pace.": {
|
||||||
"file": "andrea-131481b503.mp3",
|
"file": "andrea-131481b503.mp3",
|
||||||
"sec": 2.79
|
"sec": 2.79
|
||||||
@@ -1767,10 +2035,54 @@
|
|||||||
"file": "castello-a1dfd76497.mp3",
|
"file": "castello-a1dfd76497.mp3",
|
||||||
"sec": 6.51
|
"sec": 6.51
|
||||||
},
|
},
|
||||||
|
"castello|Lo so. Ti sento arrivare dal fiatone, un chilometro prima.": {
|
||||||
|
"file": "castello-05405f3232.mp3",
|
||||||
|
"sec": 5.63
|
||||||
|
},
|
||||||
|
"andrea|Da casa sono quattro chilometri. E due sono di salita, di quella bella.": {
|
||||||
|
"file": "andrea-57327d9598.mp3",
|
||||||
|
"sec": 6.46
|
||||||
|
},
|
||||||
|
"castello|Eppure torni sempre. Qualcosa, quassù, l'hai trovato.": {
|
||||||
|
"file": "castello-1545f0b17d.mp3",
|
||||||
|
"sec": 6.56
|
||||||
|
},
|
||||||
|
"andrea|Ho trovato la mia strada!": {
|
||||||
|
"file": "andrea-e9ef2a6d39.mp3",
|
||||||
|
"sec": 1.59
|
||||||
|
},
|
||||||
|
"andrea|...Io, che ancora non so cosa fare da grande.": {
|
||||||
|
"file": "andrea-60611ea4b9.mp3",
|
||||||
|
"sec": 3.54
|
||||||
|
},
|
||||||
|
"castello|Il castello.": {
|
||||||
|
"file": "castello-e34c381c3c.mp3",
|
||||||
|
"sec": 0.98
|
||||||
|
},
|
||||||
|
"castello|Mi è venuto bene. Non avere fretta: a me ci son voluti seicento anni.": {
|
||||||
|
"file": "castello-dcd5a7ae63.mp3",
|
||||||
|
"sec": 6.24
|
||||||
|
},
|
||||||
"castello|Quella qui non manca mai. Torna quando vuoi.": {
|
"castello|Quella qui non manca mai. Torna quando vuoi.": {
|
||||||
"file": "castello-dc8a873d86.mp3",
|
"file": "castello-dc8a873d86.mp3",
|
||||||
"sec": 4.36
|
"sec": 4.36
|
||||||
},
|
},
|
||||||
|
"giocatore_carte|Oh, bravo! Ora però rimescolo io.": {
|
||||||
|
"file": "giocatore_carte-a8846bfa7b.mp3",
|
||||||
|
"sec": 2.9
|
||||||
|
},
|
||||||
|
"giocatore_carte|I carichi portali qui, mica alla stazione! Rivincita quando vuoi.": {
|
||||||
|
"file": "giocatore_carte-6ce98bce81.mp3",
|
||||||
|
"sec": 4.72
|
||||||
|
},
|
||||||
|
"giocatore_carte|Sessanta pari. Un si litiga nemmeno sul conto!": {
|
||||||
|
"file": "giocatore_carte-13af2e2331.mp3",
|
||||||
|
"sec": 3.86
|
||||||
|
},
|
||||||
|
"giocatore_carte|Vai, ti tengo il posto. Le carte mica scappano.": {
|
||||||
|
"file": "giocatore_carte-729b3344da.mp3",
|
||||||
|
"sec": 3.3
|
||||||
|
},
|
||||||
"mariano|Aspetta, ci vuole il metro...": {
|
"mariano|Aspetta, ci vuole il metro...": {
|
||||||
"file": "mariano-e8b4ebf3d9.mp3",
|
"file": "mariano-e8b4ebf3d9.mp3",
|
||||||
"sec": 1.62
|
"sec": 1.62
|
||||||
@@ -1791,6 +2103,22 @@
|
|||||||
"file": "mariano-39e27158b7.mp3",
|
"file": "mariano-39e27158b7.mp3",
|
||||||
"sec": 2.83
|
"sec": 2.83
|
||||||
},
|
},
|
||||||
|
"ing_tozzi|Venti. Hai vinto te, stasera il caffè lo pago io.": {
|
||||||
|
"file": "ing_tozzi-51f855478a.mp3",
|
||||||
|
"sec": 4.42
|
||||||
|
},
|
||||||
|
"ing_tozzi|Venti! Al biliardo ci vuole la mano ferma, mica la corsa.": {
|
||||||
|
"file": "ing_tozzi-d557d58aec.mp3",
|
||||||
|
"sec": 4.66
|
||||||
|
},
|
||||||
|
"ing_tozzi|Quando vuoi, il tavolo è qui.": {
|
||||||
|
"file": "ing_tozzi-3d686c8cc5.mp3",
|
||||||
|
"sec": 2.05
|
||||||
|
},
|
||||||
|
"ing_tozzi|Lasci a metà? Ti segno la sconfitta a tavolino, eh.": {
|
||||||
|
"file": "ing_tozzi-282062c119.mp3",
|
||||||
|
"sec": 3.64
|
||||||
|
},
|
||||||
"andrea|Laggiù, appoggiato al muro, c'è un angolo di tela dipinta: una strada bianca, e un omino con la maglia rossa e le braccia alzate.": {
|
"andrea|Laggiù, appoggiato al muro, c'è un angolo di tela dipinta: una strada bianca, e un omino con la maglia rossa e le braccia alzate.": {
|
||||||
"file": "andrea-6484641c58.mp3",
|
"file": "andrea-6484641c58.mp3",
|
||||||
"sec": 8.67
|
"sec": 8.67
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,34 @@
|
|||||||
|
# Primo piano del biliardo
|
||||||
|
|
||||||
|
Il tavolo in `assets/closeups/biliardo-tavolo.png` è generato con lo strumento immagini integrato
|
||||||
|
di Codex, senza API. Prompt completo in `prompts/closeups/biliardo-tavolo.integrated.txt`
|
||||||
|
(cartella esclusa da git). Specifica: vista ortogonale dall'alto, pixel art da avventura anni '90,
|
||||||
|
mogano scuro a fasce chiare e scure, diamanti d'ottone, panno verde, sala in penombra;
|
||||||
|
senza buche, biglie, birilli, persone, stecche o testi. Riferimento di stile: `circolo-4-maggio.png`.
|
||||||
|
L'Ingegnere usa il foglio esistente `ing-tozzi.json`, coerente con la fotografia di riferimento.
|
||||||
|
|
||||||
|
Il master misura 1672×941. `tablePatches()` in `biliardo-render.js` mappa il panno sorgente
|
||||||
|
(190, 214)–(1484, 722) su `(VIEW.x, VIEW.y, LEN * VIEW.k, WID * VIEW.k)`; i ritagli
|
||||||
|
esterni mantengono una cornice larga 16 pixel. La geometria della simulazione resta invariata.
|
||||||
|
Il caricamento passa da `story.closeups.biliardo.picture`, con la stessa cache delle bocce.
|
||||||
|
|
||||||
|
La luce calda è disegnata sul panno con una piccola tela memorizzata, ingrandita senza smoothing.
|
||||||
|
Biglie e birilli usano blocchi di pixel; le ombre delle biglie si allontanano dalla lampada centrale.
|
||||||
|
I segnapunti sono cifre rosse a sette segmenti. Le quattro pose di Tozzi rimangono nel margine sinistro.
|
||||||
|
|
||||||
|
`biliardo.js` aggiunge soltanto stato visivo: orologio, posizione iniziale della steccata,
|
||||||
|
breve cronologia delle posizioni e istante della caduta dei birilli. La presentazione del moto
|
||||||
|
è ritardata di 180 ms, per mostrare arretramento e scatto della stecca; la fisica parte subito.
|
||||||
|
La caduta dei birilli dura 240 ms sul medesimo orologio visivo. Previsione e CPU non scrivono
|
||||||
|
questa cronologia. Un confronto con la versione precedente ha verificato 6626 aggiornamenti
|
||||||
|
identici, escludendo i soli campi visivi.
|
||||||
|
|
||||||
|
Controlli: `tests/biliardo-render.test.mjs` verifica allineamento, presentazione, cadute,
|
||||||
|
pose e immutabilità del disegno. `npm run browser:biliardo` conserva i controlli dei comandi
|
||||||
|
su desktop, touch e telefono verticale e aggiunge controlli dei pixel e catture delle animazioni
|
||||||
|
in `/tmp/regolo-biliardo`.
|
||||||
|
|
||||||
|
Verifica di questa modifica: test JavaScript e Python superati; anteprima locale del renderer
|
||||||
|
ispezionata. Restano da completare `make -s verify` e `npm run browser:biliardo` in un ambiente
|
||||||
|
che permetta server locale e Chromium: nella sandbox della sessione entrambi sono bloccati
|
||||||
|
da `Operation not permitted`. Le vecchie schermate browser non validano questa modifica.
|
||||||
@@ -0,0 +1,129 @@
|
|||||||
|
# Briscola all’oratorio
|
||||||
|
|
||||||
|
Implementazione del 26 ottobre 2026. ES modules statici, nessun build step.
|
||||||
|
|
||||||
|
## Partita e comandi
|
||||||
|
|
||||||
|
Il giocatore di carte è un personaggio inventato e provvisorio, seduto a destra alle tavolate
|
||||||
|
dell’oratorio: **[DA ANDREA: chi è]**. Il dialogo offre «Alla bona», «Seria», «A fassi male»;
|
||||||
|
dopo una partita conclusa offre la rivincita. `briscola_vinta` ricorda una vittoria e
|
||||||
|
`briscola_giocata` abilita la rivincita anche dopo sconfitta o patta. Nessuno dei due flag
|
||||||
|
serve alla soluzione dell’avventura.
|
||||||
|
|
||||||
|
Un clic o tocco su una carta la gioca al rilascio sullo stesso bersaglio. Nessuna carica.
|
||||||
|
Le frecce e 1–2–3 scelgono, Invio gioca, Esc esce. I tre pulsanti con nome e seme
|
||||||
|
offrono bersagli aggiuntivi e accesso tramite Tab. I comandi di tiro degli altri minigiochi
|
||||||
|
rimangono separati; in `MINIGAMES` pressione, rilascio, annullamento e mira sono opzionali.
|
||||||
|
|
||||||
|
Mazzo da 40 carte, 120 punti, distribuzione alternata e mazziere deterministico dal seed.
|
||||||
|
La briscola è in fondo al mazzo e compresa nel contatore. Chi prende pesca prima e riapre;
|
||||||
|
non esiste obbligo di seme. La presa resta visibile 1,25 secondi. Solo dopo la ventesima
|
||||||
|
presa si contano tutte le carte, una ogni 0,35 secondi, mostrando carta ingrandita,
|
||||||
|
incremento e totale. A 60–60 il risultato è patta. Il risultato resta fino all’uscita.
|
||||||
|
|
||||||
|
## Avversari e taratura
|
||||||
|
|
||||||
|
`observation` espone soltanto la propria mano, le carte pubbliche, i conteggi e l’eventuale
|
||||||
|
briscola pescata dall’altro. Non passa la mano avversaria, l’ordine del mazzo o il seed della
|
||||||
|
distribuzione. «Alla bona» sceglie casualmente; «Seria» scarta lisci, conserva briscole e
|
||||||
|
prende carichi con quelle piccole. «A fassi male» ricostruisce le carte non viste, confronta
|
||||||
|
le mosse su 40 distribuzioni possibili e simula seguiti giocati con buon senso. Sono ipotesi,
|
||||||
|
non la distribuzione effettiva. A mazzo finito il complemento delle carte pubbliche e della
|
||||||
|
propria mano identifica l’altra mano: da quel momento usa minimax esatto fino alla fine.
|
||||||
|
|
||||||
|
Comando riproducibile: `node tools/calibrate_briscola.mjs 1000`.
|
||||||
|
Semi `Math.imul(i, 2654435761) >>> 0`, i da 1 a 1000, stessi mazzi per ogni livello.
|
||||||
|
Andrea usa sempre `attentive`, l’euristica di riferimento; dà le carte 496 volte su 1000.
|
||||||
|
|
||||||
|
| Livello | Vittorie Andrea | Vittorie avversario | Patte | Punti medi Andrea |
|
||||||
|
| --- | ---: | ---: | ---: | ---: |
|
||||||
|
| Alla bona | 847 (84,7%) | 144 (14,4%) | 9 (0,9%) | 79,159 |
|
||||||
|
| Seria | 481 (48,1%) | 494 (49,4%) | 25 (2,5%) | 59,952 |
|
||||||
|
| A fassi male | 359 (35,9%) | 621 (62,1%) | 20 (2,0%) | 55,628 |
|
||||||
|
|
||||||
|
Queste percentuali misurano il confronto con quell’automatismo, non con giocatori umani.
|
||||||
|
|
||||||
|
## Grafica e audio
|
||||||
|
|
||||||
|
Due mazzi, scelti nel dialogo («Con le toscane» / «Con le napoletane»): stesse regole e stessi id, cambiano
|
||||||
|
nomi e disegni (`DECKS` e `DECK_CARDS` in `briscola.js`; la scelta è il flag `carte_napoletane`).
|
||||||
|
|
||||||
|
- **Toscane** (predefinite): semi francesi cuori, mattoni, fiori, picche; figure gobbo, donna e regio (il regio
|
||||||
|
sempre con la corona). Numerali senza numeri, semi disposti come nel mazzo vero e capovolti nella metà bassa;
|
||||||
|
figure intere col seme e la lettera (G, D, R) in alto a sinistra. Riferimento: `assets/raw/carte/toscane-riferimento.png`.
|
||||||
|
- **Napoletane**: monete, coppe, lame ricurve incrociate, bastoni nodosi; fante, cavallo e re. Valore nell’angolo
|
||||||
|
e seme scritto per non affidarsi solo al colore.
|
||||||
|
|
||||||
|
Tutto disegnato via canvas, in pixel art originale.
|
||||||
|
I bersagli della mano sono 84×120 pixel a 640×360. Dorso con serpentello coronato e cornice
|
||||||
|
simmetrica; tavolino di legno e panno, mano avversaria coperta, mazzo e mucchietti delle prese.
|
||||||
|
|
||||||
|
Sprite generato con lo **strumento immagini integrato**, poi preparato con
|
||||||
|
`slice_sprites.py --alpha --fixed-grid --cols 2 --rows 2` e `prepare_character.py`.
|
||||||
|
Pose: `sit`, `talk`, `laugh`, `shuffle`. Foglio originale in
|
||||||
|
`assets/raw/giocatore-carte-sheet.png`; prompt completo in
|
||||||
|
`prompts/personaggi/giocatore-carte-sheet.txt` (entrambi esclusi da git).
|
||||||
|
|
||||||
|
Effetti Web Audio `card-slide`, `card-tap`, `card-shuffle`, collegati allo stesso volume,
|
||||||
|
muto e pausa degli altri effetti. Il colpo accompagna l’arrivo della carta dopo lo scorrimento.
|
||||||
|
13 nuove battute XTTS (4 Andrea, 9 giocatore), con indice e durate aggiornati.
|
||||||
|
Per generarle senza GPU/rete, `tools/voci_xtts.py` accetta `XTTS_DEVICE=cpu` e
|
||||||
|
`XTTS_MODEL_DIR` con la cartella del modello già scaricato; le impostazioni predefinite
|
||||||
|
rimangono quelle del progetto. Non è stata verificata all’ascolto la pronuncia delle nuove voci.
|
||||||
|
|
||||||
|
## Verifica e limiti della sessione
|
||||||
|
|
||||||
|
**`npm test`: passato.** Regole, determinismo, conservazione delle 40 carte e dei 120 punti,
|
||||||
|
pescata, ultima briscola, fine mazzo, patta, livelli, accesso negato ai dati nascosti,
|
||||||
|
minimax confrontato con un oracolo esaustivo, renderer puro, input geometrico,
|
||||||
|
dialoghi/flag/rivincita e audio. Passano anche i test precedenti e la soluzione completa.
|
||||||
|
|
||||||
|
`npm run browser` e `npm run browser:briscola` sono stati lanciati ma **bloccati dall’ambiente**:
|
||||||
|
`PermissionError: [Errno 1] Operation not permitted` alla creazione del socket del server.
|
||||||
|
Anche l’avvio isolato di Chromium fallisce con `sandbox_host_linux.cc:41`,
|
||||||
|
`shutdown: Operation not permitted`. Non è stato possibile verificare l’interfaccia reale
|
||||||
|
con Playwright né produrre schermate desktop/telefono.
|
||||||
|
|
||||||
|
Il test `tests/briscola.browser.mjs` è pronto: partite complete con mouse, touch e tastiera
|
||||||
|
su desktop e telefono verticale, più touch orizzontale; pausa, muto, gesto annullato,
|
||||||
|
conteggio, risultato e rivincita. Accelera solo le attese tramite `game.update`, senza
|
||||||
|
giocare carte di Andrea direttamente nel motore. Salva in `/tmp/regolo-shots/briscola-*.png`.
|
||||||
|
Le misure Web Audio dei tre nuovi suoni sono comprese nel collaudo browser multimedia.
|
||||||
|
|
||||||
|
Anteprime **offline, non schermate browser**, prodotte e ispezionate nella sessione:
|
||||||
|
|
||||||
|
- `/tmp/regolo-shots/briscola-offline-carte.png`
|
||||||
|
- `/tmp/regolo-shots/briscola-offline-tavolo.png`
|
||||||
|
- `/tmp/regolo-shots/briscola-offline-risultato.png`
|
||||||
|
|
||||||
|
## File
|
||||||
|
|
||||||
|
Nuovi: `src/engine/briscola.js`, `src/engine/briscola-render.js`,
|
||||||
|
`assets/characters/giocatore-carte.png`, `assets/characters/giocatore-carte.json`,
|
||||||
|
`tests/briscola.test.mjs`, `tests/briscola-render.test.mjs`, `tests/briscola.browser.mjs`,
|
||||||
|
`tools/calibrate_briscola.mjs`, questo documento e 13 MP3 elencati qui sotto.
|
||||||
|
|
||||||
|
Modificati: `src/engine/game.js`, `src/engine/render.js`, `src/engine/soundscape.js`,
|
||||||
|
`src/main.js`, `src/story/story.js`, `index.html`, `style.css`, `package.json`,
|
||||||
|
`tests/story.test.mjs`, `tests/multimedia.test.mjs`, `tests/multimedia.browser.mjs`,
|
||||||
|
`tools/voci.json`, `tools/voci_xtts.py`, `assets/voices/index.json`.
|
||||||
|
|
||||||
|
Nuovi file in `assets/voices/`:
|
||||||
|
|
||||||
|
```text
|
||||||
|
andrea-6e63dafda1.mp3
|
||||||
|
andrea-71f3bff8a0.mp3
|
||||||
|
andrea-b851b9ed26.mp3
|
||||||
|
andrea-d2f285f610.mp3
|
||||||
|
giocatore_carte-12f97003ec.mp3
|
||||||
|
giocatore_carte-13af2e2331.mp3
|
||||||
|
giocatore_carte-43e76cf11b.mp3
|
||||||
|
giocatore_carte-6ce98bce81.mp3
|
||||||
|
giocatore_carte-729b3344da.mp3
|
||||||
|
giocatore_carte-8dfadb4acc.mp3
|
||||||
|
giocatore_carte-9c07caaab4.mp3
|
||||||
|
giocatore_carte-a8846bfa7b.mp3
|
||||||
|
giocatore_carte-f1f219bd1c.mp3
|
||||||
|
```
|
||||||
|
|
||||||
|
`docs/STATO.md` invariato. Nessun commit, tag o push.
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user