Prototipo del motore: scena, camminata, verbi, inventario, dialoghi, salvataggio

Motore guidato dai dati con due scene di prova (Piazza e salita alla Fortezza),
percorsi su area concava, clic intelligente e pressione lunga, test della soluzione
completa in node e nel browser con Playwright. Nel documento la leggenda del nonno.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-23 00:08:00 +02:00
co-authored by Claude Opus 5.5
parent 0c5cd240e4
commit 826f5f99ec
22 changed files with 1572 additions and 1 deletions
+46
View File
@@ -0,0 +1,46 @@
<!doctype html>
<html lang="it">
<head>
<meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1,viewport-fit=cover">
<meta name="theme-color" content="#1b1420"><meta name="description" content="La Leggenda del Regolo: un'avventura punta-e-clicca a San Piero a Sieve, durante il Palio della Fortezza del 2007.">
<title>La Leggenda del Regolo</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<div id="app">
<div id="stage">
<canvas id="scene" width="640" height="360" aria-label="La scena dell'avventura"></canvas>
<div id="speech" aria-live="polite"></div>
<section id="title" class="overlay">
<h1>La Leggenda<br>del <span>Regolo</span></h1>
<p class="subtitle">San Piero a Sieve · Palio della Fortezza · 2007</p>
<div class="buttons"><button id="continue" hidden>Continua</button><button id="new-game">Nuova partita</button></div>
<p class="dedication">Al Lele, che mi ha fatto conoscere Monkey Island.</p>
</section>
<section id="ending" class="overlay" hidden>
<h2>Fine del prototipo</h2>
<p>Il Regolo è passato di qui. Il resto della storia è ancora da scrivere.</p>
<p class="dedication">Al Lele, che mi ha fatto conoscere Monkey Island.</p>
<div class="buttons"><button id="restart">Ricomincia</button></div>
</section>
</div>
<div id="side">
<div id="sentence" aria-live="polite"></div>
<div id="panel">
<div id="verbs"></div>
<div id="inventory" aria-label="Inventario"></div>
</div>
<ol id="choices" hidden></ol>
</div>
<p id="rotate">Gira il telefono: in orizzontale si gioca meglio.</p>
</div>
<div id="error" hidden role="alert"></div>
<script type="module">
import('./src/main.js').catch(error => {
const panel = document.getElementById('error');
panel.textContent = 'Avvio non riuscito: apri il gioco da un server statico (python3 -m http.server) e ricarica. ' + error.message;
panel.hidden = false;
});
</script>
</body>
</html>