Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d51f5e56ea | ||
|
|
7b7e0031d1 | ||
|
|
94e9da4009 | ||
|
|
bd66ea45ad | ||
|
|
9eabd5c6e1 | ||
|
|
ddc877a2d1 | ||
|
|
14a1e6e5b8 | ||
|
|
49bdfb313a | ||
|
|
416b9d46ef | ||
|
|
7476c84b76 | ||
|
|
053728a086 | ||
|
|
394e8bdde3 | ||
|
|
ca56a9df17 | ||
|
|
b0b2fc0ed3 | ||
|
|
f56c9b5358 | ||
|
|
70f328c56d | ||
|
|
0a0bb7eea4 | ||
|
|
16759006b1 | ||
|
|
7c49c3e260 | ||
|
|
817cfbd7fd | ||
|
|
44485cff52 | ||
|
|
a0201fea18 | ||
|
|
c4bac08c02 | ||
|
|
7f0584f0fc |
@@ -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.
|
||||
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
|
||||
|
||||
```zsh
|
||||
@@ -71,5 +76,6 @@ npm test # logica, storia coerente, soluzione percorsa dall'inizio alla
|
||||
npm install && npx playwright install chromium-headless-shell
|
||||
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:biliardo # mira e tiro con mouse/touch, desktop e telefono; schermate in /tmp/regolo-biliardo
|
||||
```
|
||||
|
||||
|
||||
@@ -0,0 +1,70 @@
|
||||
{
|
||||
"image": "fra-peppino.png",
|
||||
"height": 120,
|
||||
"frames": {
|
||||
"stand": {
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"w": 50,
|
||||
"h": 120,
|
||||
"ax": 24.0,
|
||||
"ay": 120
|
||||
},
|
||||
"blink": {
|
||||
"x": 52,
|
||||
"y": 0,
|
||||
"w": 50,
|
||||
"h": 120,
|
||||
"ax": 23.9,
|
||||
"ay": 120
|
||||
},
|
||||
"talk": {
|
||||
"x": 104,
|
||||
"y": 0,
|
||||
"w": 50,
|
||||
"h": 120,
|
||||
"ax": 23.7,
|
||||
"ay": 120
|
||||
},
|
||||
"explain": {
|
||||
"x": 156,
|
||||
"y": 0,
|
||||
"w": 61,
|
||||
"h": 121,
|
||||
"ax": 27.6,
|
||||
"ay": 121
|
||||
},
|
||||
"laugh": {
|
||||
"x": 219,
|
||||
"y": 0,
|
||||
"w": 54,
|
||||
"h": 119,
|
||||
"ax": 24.3,
|
||||
"ay": 119
|
||||
},
|
||||
"bless": {
|
||||
"x": 275,
|
||||
"y": 0,
|
||||
"w": 58,
|
||||
"h": 119,
|
||||
"ax": 27.6,
|
||||
"ay": 119
|
||||
},
|
||||
"shrug": {
|
||||
"x": 335,
|
||||
"y": 0,
|
||||
"w": 91,
|
||||
"h": 119,
|
||||
"ax": 43.3,
|
||||
"ay": 119
|
||||
},
|
||||
"point": {
|
||||
"x": 428,
|
||||
"y": 0,
|
||||
"w": 76,
|
||||
"h": 119,
|
||||
"ax": 31.2,
|
||||
"ay": 119
|
||||
}
|
||||
}
|
||||
}
|
||||
|
After Width: | Height: | Size: 103 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
|
||||
}
|
||||
}
|
||||
}
|
||||
|
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
|
||||
}
|
||||
}
|
||||
}
|
||||
|
After Width: | Height: | Size: 91 KiB |
@@ -0,0 +1,70 @@
|
||||
{
|
||||
"image": "mariano.png",
|
||||
"height": 120,
|
||||
"frames": {
|
||||
"stand": {
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"w": 40,
|
||||
"h": 120,
|
||||
"ax": 17.8,
|
||||
"ay": 120
|
||||
},
|
||||
"blink": {
|
||||
"x": 42,
|
||||
"y": 0,
|
||||
"w": 40,
|
||||
"h": 120,
|
||||
"ax": 17.9,
|
||||
"ay": 120
|
||||
},
|
||||
"talk": {
|
||||
"x": 84,
|
||||
"y": 0,
|
||||
"w": 40,
|
||||
"h": 120,
|
||||
"ax": 17.9,
|
||||
"ay": 120
|
||||
},
|
||||
"explain": {
|
||||
"x": 126,
|
||||
"y": 0,
|
||||
"w": 60,
|
||||
"h": 120,
|
||||
"ax": 20.9,
|
||||
"ay": 120
|
||||
},
|
||||
"throw": {
|
||||
"x": 188,
|
||||
"y": 0,
|
||||
"w": 80,
|
||||
"h": 102,
|
||||
"ax": 51.5,
|
||||
"ay": 102
|
||||
},
|
||||
"laugh": {
|
||||
"x": 270,
|
||||
"y": 0,
|
||||
"w": 41,
|
||||
"h": 119,
|
||||
"ax": 16.9,
|
||||
"ay": 119
|
||||
},
|
||||
"measure": {
|
||||
"x": 313,
|
||||
"y": 0,
|
||||
"w": 72,
|
||||
"h": 91,
|
||||
"ax": 38.0,
|
||||
"ay": 91
|
||||
},
|
||||
"cheer": {
|
||||
"x": 387,
|
||||
"y": 0,
|
||||
"w": 63,
|
||||
"h": 118,
|
||||
"ax": 27.5,
|
||||
"ay": 118
|
||||
}
|
||||
}
|
||||
}
|
||||
|
After Width: | Height: | Size: 96 KiB |
|
After Width: | Height: | Size: 1.7 MiB |
|
After Width: | Height: | Size: 324 KiB |
|
After Width: | Height: | Size: 143 KiB |
|
After Width: | Height: | Size: 4.2 KiB |
@@ -75,6 +75,14 @@
|
||||
"file": "andrea-a9df2e6bbb.mp3",
|
||||
"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.": {
|
||||
"file": "andrea-6cc844498a.mp3",
|
||||
"sec": 10.59
|
||||
@@ -279,6 +287,26 @@
|
||||
"file": "andrea-68a845881b.mp3",
|
||||
"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.": {
|
||||
"file": "andrea-43fd5c2b27.mp3",
|
||||
"sec": 4.46
|
||||
@@ -615,9 +643,65 @@
|
||||
"file": "andrea-d193b44288.mp3",
|
||||
"sec": 3.65
|
||||
},
|
||||
"andrea|Il tabernacolo prima del ponte. Chi passa per andare via dal paese, un saluto glielo fa sempre.": {
|
||||
"file": "andrea-78a5ef65f0.mp3",
|
||||
"sec": 7.84
|
||||
"andrea|La sala dei biliardi. Qui dentro si parla piano, e si gioca forte.": {
|
||||
"file": "andrea-0268742faf.mp3",
|
||||
"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.": {
|
||||
"file": "andrea-f322731846.mp3",
|
||||
@@ -655,6 +739,42 @@
|
||||
"file": "andrea-e47b3cebb5.mp3",
|
||||
"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.": {
|
||||
"file": "barondeduke-52184c7c05.mp3",
|
||||
"sec": 5.58
|
||||
@@ -883,9 +1003,9 @@
|
||||
"file": "andrea-e94382adb6.mp3",
|
||||
"sec": 5.76
|
||||
},
|
||||
"andrea|Senza bocce, e senza un vecchietto che misura col metro, non è una partita.": {
|
||||
"file": "andrea-d6576896b2.mp3",
|
||||
"sec": 5.36
|
||||
"andrea|Una partita? Chiedo a Mariano, il campione.": {
|
||||
"file": "andrea-609540460a.mp3",
|
||||
"sec": 3.81
|
||||
},
|
||||
"andrea|Di là, dove guarda l'omino di ferro, c'è il campo da tennis della chiesa.": {
|
||||
"file": "andrea-455ac4031a.mp3",
|
||||
@@ -931,6 +1051,10 @@
|
||||
"file": "andrea-2de291f241.mp3",
|
||||
"sec": 4.09
|
||||
},
|
||||
"andrea|Mariano, il campione del pallaio. Gli occhiali in testa, il sorriso di chi ha già vinto.": {
|
||||
"file": "andrea-3e2f9b4424.mp3",
|
||||
"sec": 6.42
|
||||
},
|
||||
"andrea|Giù a destra, oltre le vigne, c'è la casa del maestro Bacci. Mezzo paese ha imparato a leggere e scrivere da lui.": {
|
||||
"file": "andrea-060513a152.mp3",
|
||||
"sec": 8.65
|
||||
@@ -1083,9 +1207,9 @@
|
||||
"file": "andrea-70f150bdec.mp3",
|
||||
"sec": 2.67
|
||||
},
|
||||
"tozzino|E chi sennò? Ha chiamato ora: è imbottigliato in Bolognese.": {
|
||||
"file": "tozzino-d51159c364.mp3",
|
||||
"sec": 4.08
|
||||
"tozzino|E chi sennò? Ha chiamato ora: s'è fermato a Pratolino a mettere le catene. A breve arriva.": {
|
||||
"file": "tozzino-9fef6eb47d.mp3",
|
||||
"sec": 6.42
|
||||
},
|
||||
"tozzino|Se non arriva, la vinco a tavolino.": {
|
||||
"file": "tozzino-c06cc01612.mp3",
|
||||
@@ -1615,6 +1739,10 @@
|
||||
"file": "andrea-06f5050907.mp3",
|
||||
"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!": {
|
||||
"file": "andrea-fca6f59a70.mp3",
|
||||
"sec": 3.41
|
||||
@@ -1659,6 +1787,102 @@
|
||||
"file": "arcu-5148dffe36.mp3",
|
||||
"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?": {
|
||||
"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
|
||||
},
|
||||
"andrea|Ciao Mariano.": {
|
||||
"file": "andrea-76a4a385c7.mp3",
|
||||
"sec": 0.89
|
||||
},
|
||||
"mariano|Con me? Al pallaio sono il campione.": {
|
||||
"file": "mariano-e8bb19cfdf.mp3",
|
||||
"sec": 3.31
|
||||
},
|
||||
"mariano|Facciamo così: se mi batti, ti porto a Brento Sanico.": {
|
||||
"file": "mariano-0eeb942ca2.mp3",
|
||||
"sec": 3.52
|
||||
},
|
||||
"mariano|Come la vuoi?": {
|
||||
"file": "mariano-0288ec460b.mp3",
|
||||
"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.": {
|
||||
"file": "mariano-1c9cd0c325.mp3",
|
||||
"sec": 5.96
|
||||
},
|
||||
"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
|
||||
},
|
||||
"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?": {
|
||||
"file": "andrea-42b02eb9ea.mp3",
|
||||
"sec": 3.9
|
||||
@@ -1667,6 +1891,14 @@
|
||||
"file": "andrea-01d1ccb933.mp3",
|
||||
"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.": {
|
||||
"file": "andrea-131481b503.mp3",
|
||||
"sec": 2.79
|
||||
@@ -1731,10 +1963,74 @@
|
||||
"file": "castello-a1dfd76497.mp3",
|
||||
"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.": {
|
||||
"file": "castello-dc8a873d86.mp3",
|
||||
"sec": 4.36
|
||||
},
|
||||
"mariano|Aspetta, ci vuole il metro...": {
|
||||
"file": "mariano-e8b4ebf3d9.mp3",
|
||||
"sec": 1.62
|
||||
},
|
||||
"mariano|Hai vinto, ti ci porto!": {
|
||||
"file": "mariano-f361945994.mp3",
|
||||
"sec": 1.66
|
||||
},
|
||||
"mariano|Bocciato! Al pallaio comando io.": {
|
||||
"file": "mariano-4b1eea73b2.mp3",
|
||||
"sec": 3.38
|
||||
},
|
||||
"mariano|Quando vuoi la rivincita, sono qui.": {
|
||||
"file": "mariano-e582e766cd.mp3",
|
||||
"sec": 2.29
|
||||
},
|
||||
"mariano|Già stanco? Il pallaio ti aspetta.": {
|
||||
"file": "mariano-39e27158b7.mp3",
|
||||
"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.": {
|
||||
"file": "andrea-6484641c58.mp3",
|
||||
"sec": 8.67
|
||||
|
||||
@@ -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.
|
||||
@@ -105,3 +105,18 @@ si segna qui con la data e il punto di `src/story/story.js` dove sta; le persone
|
||||
- *Regia alla fessura*: col meccanismo del primo piano (`closeup`) il buio, la torcia, un istante di silenzio,
|
||||
poi gli occhi. Due immagini di Codex.
|
||||
- *Segreti facoltativi del paese* con pagine illustrate nel taccuino: funzione nuova, dopo la storia principale.
|
||||
- **Altri minigiochi come le bocce** (25 ottobre 2026): ognuno è un primo piano (`closeup` con il suo `type`, come
|
||||
`bocce`), con comandi per dito, mouse e tastiera, i suoi test e una battuta per chi vince e per chi perde.
|
||||
Il posto naturale sono le gare del Palio del secondo capitolo:
|
||||
- *Passamano dei mattoni* (da fare per primo): un gioco di ritmo, i mattoni arrivano lungo la fila e si passano al
|
||||
momento giusto; sbagliando il tempo ne cade uno. Facile col dito, e chiude il cerchio col finale (i mattoni
|
||||
portati in Fortezza).
|
||||
- *Le carrette*: corsa in discesa vista di lato, a destra e sinistra fra buche e balle di paglia. La più
|
||||
spettacolare, la più lunga da disegnare.
|
||||
- *Bandierine (lavanderine)*: correre a prendere la bandiera prima dell'avversario, di riflessi.
|
||||
- *Caccia al tesoro*: un giro di indizi fra le scene che ci sono già, senza un minigioco nuovo.
|
||||
Fuori dal Palio:
|
||||
- *Briscola al circolino* con l'Arcu e il Barone (la gag del «Male male si divide»): una mano corta.
|
||||
- *Rigori all'A. Bettini*: mira e forza come alle bocce, contro un portiere. Andrea ha ritrovato la foto di squadra
|
||||
sul campo in terra (porta, rete, la torre della Pieve dietro, anni '90): lo sfondo del minigioco lo fa Codex da quella,
|
||||
senza le persone (per i volti serve il consenso). Da salvare in `assets/raw/foto/campo-bettini-squadra.jpg`.
|
||||
|
||||
@@ -103,6 +103,38 @@
|
||||
<div id="inventory" aria-label="Inventario"></div>
|
||||
</div>
|
||||
<ol id="choices" hidden></ol>
|
||||
<section id="bocce-controls" hidden aria-label="Comandi delle bocce">
|
||||
<p id="bocce-status" role="status"></p>
|
||||
<div class="bocce-adjust">
|
||||
<button id="bocce-left" type="button" aria-label="Sposta la mira a sinistra">← Mira</button>
|
||||
<label for="bocce-power">Forza <output id="bocce-power-value">50%</output>
|
||||
<input id="bocce-power" type="range" min="0" max="100" step="1" value="50" aria-label="Forza del lancio">
|
||||
</label>
|
||||
<button id="bocce-right" type="button" aria-label="Sposta la mira a destra">Mira →</button>
|
||||
<button id="bocce-throw" type="button">Lancia</button>
|
||||
</div>
|
||||
<details id="bocce-help"><summary>Come si gioca</summary>
|
||||
<p>Tocca il campo o il dettaglio del pallino per mirare. Regola la forza, poi premi Lancia.
|
||||
Il cerchio azzurro indica dove si fermerebbe la boccia senza urti.</p>
|
||||
<p>Puoi anche tenere premuto sul campo o Spazio e rilasciare per tirare.
|
||||
Frecce ← →: mira; ↑ ↓: forza. Esc esce dalla mano.</p>
|
||||
<p>Tre bocce a testa. Tira chi non ha il punto; segna ogni boccia più vicina della migliore avversaria.
|
||||
Vince chi fa più punti nella mano.</p>
|
||||
</details>
|
||||
<details id="biliardo-help" hidden><summary>Come si gioca</summary>
|
||||
<p>Clic o tocco sul tavolo fissa la mira: puoi spostarti sui comandi senza cambiarla.
|
||||
La linea tratteggiata segue la tua biglia fino al primo urto, comprese le sponde; il cerchio vuoto indica
|
||||
il punto di contatto. Dopo l’urto, la freccia azzurra mostra la direzione dell’avversaria, quella gialla
|
||||
la tua. Le frecce mostrano solo il primo tratto, fino al prossimo ostacolo o al massimo 50 cm.
|
||||
Senza urti, il cerchietto indica dove ti fermi. La guida arancione segnala un primo contatto falloso.</p>
|
||||
<p>Regola la forza, poi premi Tira. Oppure tieni premuto sul tavolo o Spazio e rilascia per tirare:
|
||||
durante la carica la mira resta ferma. Frecce ← →: mira fine; Maiusc + ← →: regolazione ancora più precisa;
|
||||
↑ ↓: forza. Esc esce dalla partita. I colpi sono centrali, senza effetti di rotazione.</p>
|
||||
<p>Cinque birilli: devi colpire la biglia avversaria e mandarla sui birilli o sul pallino. Birillo bianco 2 punti,
|
||||
rosso 4, rosso da solo 10; pallino toccato dalla biglia avversaria 3. Se manchi la biglia avversaria, tocchi prima
|
||||
il pallino o abbatti birilli con la tua, i punti (almeno 2) vanno all'avversario. Un colpo a testa; vince chi arriva prima a 20.</p>
|
||||
</details>
|
||||
</section>
|
||||
</div>
|
||||
<p id="rotate">Gira il telefono: in orizzontale si gioca meglio.</p>
|
||||
</div>
|
||||
|
||||
@@ -1,11 +1,12 @@
|
||||
{
|
||||
"name": "leggenda-del-regolo",
|
||||
"version": "0.1.5",
|
||||
"version": "0.1.9",
|
||||
"private": true,
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
"test": "node --test tests/*.test.mjs",
|
||||
"browser": "node tests/browser.mjs",
|
||||
"browser:biliardo": "node tests/biliardo.browser.mjs",
|
||||
"browser:effects": "node tests/ambient.browser.mjs",
|
||||
"serve": "python3 -m http.server 8000"
|
||||
},
|
||||
|
||||