From 3edcf891ffa0553312ac5fb78acd65d15ba95550 Mon Sep 17 00:00:00 2001 From: SimonezYT Date: Fri, 13 Mar 2026 16:52:38 +0100 Subject: [PATCH] schermata iniziale --- README.md | 106 +++++----- index.html | 103 +++++----- progetto/idea gioco.drawio | 116 +++++------ progetto/progetto.txt | 14 +- script.js | 180 ++++++++--------- style.css | 390 ++++++++++++++++++++----------------- titolo.png | Bin 0 -> 45510 bytes 7 files changed, 479 insertions(+), 430 deletions(-) mode change 100644 => 100755 README.md create mode 100755 titolo.png diff --git a/README.md b/README.md old mode 100644 new mode 100755 index 8814e2c..1694be5 --- a/README.md +++ b/README.md @@ -1,54 +1,54 @@ -# 🌍 Pulisci il Mondo - Progetto per la Giornata della Terra - -**Pulisci il Mondo** è un videogioco web in 3D nato per sensibilizzare gli utenti sulla gestione dei rifiuti e l'importanza del riciclo. Il progetto adotta un'architettura Fullstack basata su **XAMPP** per la gestione di una classifica globale e il salvataggio dei record. - ---- - -## 🛠️ Architettura Tecnica -* **Entrypoint:** `index.php` (Pagina di atterraggio con trailer e controlli). -* **Backend:** PHP + MySQL (XAMPP) per la gestione del database e dei punteggi. -* **Frontend:** **Three.js** (motore 3D), JavaScript (ES6+), CSS3. -* **Trasferimento Dati:** Utilizzo di Cookie temporanei o `localStorage` per mantenere i dati tra le diverse fasi di gioco. - ---- - -## 🗺️ Roadmap di Sviluppo - -### 🚩 Milestone Generali (Nucleo del Progetto) -- [⚠️] **Design UI & Mockup:** Finalizzazione degli asset grafici (basati sullo schema Draw.io). -- [❌] **Configurazione Database:** Creazione delle tabelle `classifica` e `records` su MySQL. -- [❌] **Logica Entrypoint:** Sviluppo di `index.php` con video di sfondo e overlay dei comandi. -- [❌] **Sistema di Trasferimento:** Implementazione logica per il passaggio dei dati dalla Fase 1 alla Fase 2. -- [❌] **Gestione Impostazioni:** Pannello per regolare il volume e inserire il nome della squadra (servira' nella classifica). -- [❌] **Pagina Dinamica:** Creazione della classifica in PHP con recupero dati in tempo reale. - -### 🏝️ Fase 1: La Raccolta (Timer: 1m) -- [⚠️] **Ambiente di gioco:** Modellazione dell'isola 3D con Three.js e gestione dei confini della mappa. -- [⚠️] **Sistema di Spawn:** Posizionamento casuale dei rifiuti su 20 coordinate casuali. -- [⚠️] **Sistema Ostacoli:** Inserimento di modelli 3D di alberi e oggetti ambientali decorativi. -- [⚠️] **Meccaniche di Raccolta:** Gestione delle collisioni e incremento del punteggio ecologico. -- [✅] **Interfaccia (HUD):** Overlay con Timer (60s), contatore rifiuti e disattivazione della pausa. -- [❌] **Rifinitura (Polish):** Animazioni di raccolta e ottimizzazione delle mesh 3D. - -### ♻️ Fase 2: Lo Smistamento (Timer: 5s * Punteggio) -- [❌] **Timer Dinamico:** Calcolo del tempo a disposizione basato sul successo della Fase 1. -- [❌] **Motore di Smistamento:** Logica di convalida (Rifiuto ↔️ Bidone corretto). -- [❌] **Interfaccia Utente:** Layout con i 6 bidoni (Plastica, Umido, Indifferenziata, Vetro, Carta, Alluminio). -- [❌] **Gestione Input:** Meccanica di interazione tramite Drag & Drop o selezione rapida. -- [❌] **Feedback Visivo:** Effetti sonori e visivi per risposte corrette o errate. - -### 🏆 Fase Finale: Classifica & Record -- [❌] **Calcolo Punteggio:** Elaborazione dei risultati finali e calcolo dei bonus velocità. -- [❌] **Verifica Record:** Confronto del punteggio con il record personale salvato. -- [❌] **Classifica Globale:** Script PHP per l'invio e la visualizzazione della Top 10 dal database. -- [❌] **Schermata Game Over:** Riepilogo statistiche e opzione per riavviare la partita. - ---- - -## 📂 Struttura delle Cartelle -* `/assets` - Modelli 3D, video loop, texture dei rifiuti e icone dei bidoni. -* `/css` - Fogli di stile per i menu e l'interfaccia di gioco (HUD). -* `/js` - Logica core e rendering (Three.js, stage1.js, stage2.js). -* `/php` - Script per il backend (`db_connect.php`, `save_score.php`). -* `/games` - Pagine HTML dedicate alle sessioni di gioco (`fase1.html`, `fase2.html`). +# 🌍 Pulisci il Mondo - Progetto per la Giornata della Terra + +**Pulisci il Mondo** è un videogioco web in 3D nato per sensibilizzare gli utenti sulla gestione dei rifiuti e l'importanza del riciclo. Il progetto adotta un'architettura Fullstack basata su **XAMPP** per la gestione di una classifica globale e il salvataggio dei record. + +--- + +## 🛠️ Architettura Tecnica +* **Entrypoint:** `index.php` (Pagina di atterraggio con trailer e controlli). +* **Backend:** PHP + MySQL (XAMPP) per la gestione del database e dei punteggi. +* **Frontend:** **Three.js** (motore 3D), JavaScript (ES6+), CSS3. +* **Trasferimento Dati:** Utilizzo di Cookie temporanei o `localStorage` per mantenere i dati tra le diverse fasi di gioco. + +--- + +## 🗺️ Roadmap di Sviluppo + +### 🚩 Milestone Generali (Nucleo del Progetto) +- [⚠️] **Design UI & Mockup:** Finalizzazione degli asset grafici (basati sullo schema Draw.io). +- [❌] **Configurazione Database:** Creazione delle tabelle `classifica` e `records` su MySQL. +- [❌] **Logica Entrypoint:** Sviluppo di `index.php` con video di sfondo e overlay dei comandi. +- [❌] **Sistema di Trasferimento:** Implementazione logica per il passaggio dei dati dalla Fase 1 alla Fase 2. +- [❌] **Gestione Impostazioni:** Pannello per regolare il volume e inserire il nome della squadra (servira' nella classifica). +- [❌] **Pagina Dinamica:** Creazione della classifica in PHP con recupero dati in tempo reale. + +### 🏝️ Fase 1: La Raccolta (Timer: 1m) +- [⚠️] **Ambiente di gioco:** Modellazione dell'isola 3D con Three.js e gestione dei confini della mappa. +- [⚠️] **Sistema di Spawn:** Posizionamento casuale dei rifiuti su 20 coordinate casuali. +- [⚠️] **Sistema Ostacoli:** Inserimento di modelli 3D di alberi e oggetti ambientali decorativi. +- [⚠️] **Meccaniche di Raccolta:** Gestione delle collisioni e incremento del punteggio ecologico. +- [✅] **Interfaccia (HUD):** Overlay con Timer (60s), contatore rifiuti e disattivazione della pausa. +- [❌] **Rifinitura (Polish):** Animazioni di raccolta e ottimizzazione delle mesh 3D. + +### ♻️ Fase 2: Lo Smistamento (Timer: 5s * Punteggio) +- [❌] **Timer Dinamico:** Calcolo del tempo a disposizione basato sul successo della Fase 1. +- [❌] **Motore di Smistamento:** Logica di convalida (Rifiuto ↔️ Bidone corretto). +- [❌] **Interfaccia Utente:** Layout con i 6 bidoni (Plastica, Umido, Indifferenziata, Vetro, Carta, Alluminio). +- [❌] **Gestione Input:** Meccanica di interazione tramite Drag & Drop o selezione rapida. +- [❌] **Feedback Visivo:** Effetti sonori e visivi per risposte corrette o errate. + +### 🏆 Fase Finale: Classifica & Record +- [❌] **Calcolo Punteggio:** Elaborazione dei risultati finali e calcolo dei bonus velocità. +- [❌] **Verifica Record:** Confronto del punteggio con il record personale salvato. +- [❌] **Classifica Globale:** Script PHP per l'invio e la visualizzazione della Top 10 dal database. +- [❌] **Schermata Game Over:** Riepilogo statistiche e opzione per riavviare la partita. + +--- + +## 📂 Struttura delle Cartelle +* `/assets` - Modelli 3D, video loop, texture dei rifiuti e icone dei bidoni. +* `/css` - Fogli di stile per i menu e l'interfaccia di gioco (HUD). +* `/js` - Logica core e rendering (Three.js, stage1.js, stage2.js). +* `/php` - Script per il backend (`db_connect.php`, `save_score.php`). +* `/games` - Pagine HTML dedicate alle sessioni di gioco (`fase1.html`, `fase2.html`). * `index.php` - Homepage e controller principale del progetto. \ No newline at end of file diff --git a/index.html b/index.html index 6420f4b..e19c41d 100755 --- a/index.html +++ b/index.html @@ -1,46 +1,59 @@ - - - - - Semplice Island FPS - - - -
- -
-
-
- titolo -
-
-
-
-

Controlli

-

WASD Movimento

-

Mouse Camera

-
-
-
- Clicca per giocare -
-
-
-
-
-
Rifiuti: 0
-
Tempo: XX:XX
-
+
- - - + + + + + Semplice Island FPS + + + +
+ +
+
+
+ titolo +
+
+
+
+

Controlli

+

Movimento

+

Freccia su Avanti

+

Freccia giù Indietro

+

Freccia destra Destra

+

Freccia sinistra Sinistra

+

Mouse Punto di vista

+
+
+
+ Clicca per giocare +
+
+
+

Istruzioni

+

Obiettivo: raccogliere tutti i rifiuti sull’isola

+

Attenzione allo scadere del tempo!

+

Usa i comandi per esplorare e ripulire

+
+
+ +
+
+
+
+
Rifiuti: 0
+
Tempo: XX:XX
+
+
+ + + \ No newline at end of file diff --git a/progetto/idea gioco.drawio b/progetto/idea gioco.drawio index 09a02d2..6840754 100755 --- a/progetto/idea gioco.drawio +++ b/progetto/idea gioco.drawio @@ -1,58 +1,58 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/progetto/progetto.txt b/progetto/progetto.txt index 233fac8..ff7eff8 100755 --- a/progetto/progetto.txt +++ b/progetto/progetto.txt @@ -1,8 +1,8 @@ -Nome gioco: Pulisci il mondo - -posizioni: 20 posizioni predefinite scelte random -tempo 1° fase: 1m -tempo 2° fase: 5s * punteggio -schermata iniziale: click + controlli + bckg trailer (loop video) + titolo -schermata intermedia: istruzioni +Nome gioco: Pulisci il mondo + +posizioni: 20 posizioni predefinite scelte random +tempo 1° fase: 1m +tempo 2° fase: 5s * punteggio +schermata iniziale: click + controlli + bckg trailer (loop video) + titolo +schermata intermedia: istruzioni schermata finale: punteggio finale + record + classifica(?) \ No newline at end of file diff --git a/script.js b/script.js index 4c6a774..d1e7f80 100755 --- a/script.js +++ b/script.js @@ -1,91 +1,91 @@ -import * as THREE from 'three'; -import { PointerLockControls } from 'three/addons/controls/PointerLockControls.js'; -import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'; - -// 1. SCENA E CAMERA -const scene = new THREE.Scene(); -scene.background = new THREE.Color(0x87ceeb); -const camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000); -const renderer = new THREE.WebGLRenderer(); -renderer.setSize(window.innerWidth, window.innerHeight); -document.body.appendChild(renderer.domElement); -window.addEventListener('resize', function () { - renderer.setSize(window.innerWidth, window.innerHeight) -}) - -// 2. LUCI E AMBIENTE -scene.add(new THREE.AmbientLight(0xffffff, 1)); -const island = new THREE.Mesh(new THREE.CircleGeometry(20, 32), new THREE.MeshStandardMaterial({ color: 0x4df556 })); // #4df555 -island.rotation.x = -Math.PI / 2; -scene.add(island); - -// 3. CONTROLLI -function lock() { - document.getElementById('start').style.display = 'none'; - document.getElementById('punti').style.display = 'block'; - document.getElementById('tempo').style.display = 'block'; - document.getElementById('crosshair').style.display = 'block'; -} -function unlock() { - const startDiv = document.getElementById('start'); - startDiv.style.display = 'flex'; // Forza il layout Flexbox - // Nascondi l'HUD - document.getElementById('punti').style.display = 'none'; - document.getElementById('tempo').style.display = 'none'; - document.getElementById('crosshair').style.display = 'none'; -} -const controls = new PointerLockControls(camera, document.body); -document.getElementById('start').addEventListener('click', () => controls.lock()); -controls.addEventListener('lock', lock); -controls.addEventListener('unlock', unlock); - -// 4. GESTIONE RIFIUTI (20 pezzi) -const trashArray = []; -let score = 0; -const loader = new GLTFLoader(); - -loader.load('models/rifiuto.glb', (gltf) => { - const mesh = gltf.scene.getObjectByName("Trash_Pile_03_GEO"); - mesh.geometry.center(); // Centra l'oggetto per collisioni precise - for (let i = 0; i < 20; i++) { - const clone = mesh.clone(); - scene.add(clone); - trashArray.push(clone); - spawn(clone); - } -}); - -function spawn(obj) { - const a = Math.random() * Math.PI * 2; - const r = Math.random() * 18; - obj.position.set(Math.cos(a) * r, 0.3, Math.sin(a) * r); -} - -// 5. MOVIMENTO E COLLISIONI -const keys = {}; -document.onkeydown = (e) => keys[e.code] = true; -document.onkeyup = (e) => keys[e.code] = false; - -function animate() { - requestAnimationFrame(animate); - if (controls.isLocked) { - if (keys['KeyW']) controls.moveForward(0.15); - if (keys['KeyS']) controls.moveForward(-0.15); - if (keys['KeyA']) controls.moveRight(-0.15); - if (keys['KeyD']) controls.moveRight(0.15); - camera.position.y = 1.6; - - // Controllo collisioni - const pPos = camera.position.clone(); - pPos.y -= 1.0; - trashArray.forEach(t => { - if (new THREE.Box3().setFromObject(t).expandByScalar(0.3).containsPoint(pPos)) { - score++; - document.getElementById('score').innerText = score; - spawn(t); - } - }); - } - renderer.render(scene, camera); -} +import * as THREE from 'three'; +import { PointerLockControls } from 'three/addons/controls/PointerLockControls.js'; +import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'; + +// 1. SCENA E CAMERA +const scene = new THREE.Scene(); +scene.background = new THREE.Color(0x87ceeb); +const camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000); +const renderer = new THREE.WebGLRenderer(); +renderer.setSize(window.innerWidth, window.innerHeight); +document.body.appendChild(renderer.domElement); +window.addEventListener('resize', function () { + renderer.setSize(window.innerWidth, window.innerHeight) +}) + +// 2. LUCI E AMBIENTE +scene.add(new THREE.AmbientLight(0xffffff, 1)); +const island = new THREE.Mesh(new THREE.CircleGeometry(20, 32), new THREE.MeshStandardMaterial({ color: 0x4df556 })); // #4df555 +island.rotation.x = -Math.PI / 2; +scene.add(island); + +// 3. CONTROLLI +function lock() { + document.getElementById('start').style.display = 'none'; + document.getElementById('punti').style.display = 'block'; + document.getElementById('tempo').style.display = 'block'; + document.getElementById('crosshair').style.display = 'block'; +} +function unlock() { + const startDiv = document.getElementById('start'); + startDiv.style.display = 'flex'; // Forza il layout Flexbox + // Nascondi l'HUD + document.getElementById('punti').style.display = 'none'; + document.getElementById('tempo').style.display = 'none'; + document.getElementById('crosshair').style.display = 'none'; +} +const controls = new PointerLockControls(camera, document.body); +document.getElementById('start').addEventListener('click', () => controls.lock()); +controls.addEventListener('lock', lock); +controls.addEventListener('unlock', unlock); + +// 4. GESTIONE RIFIUTI (20 pezzi) +const trashArray = []; +let score = 0; +const loader = new GLTFLoader(); + +loader.load('models/rifiuto.glb', (gltf) => { + const mesh = gltf.scene.getObjectByName("Trash_Pile_03_GEO"); + mesh.geometry.center(); // Centra l'oggetto per collisioni precise + for (let i = 0; i < 20; i++) { + const clone = mesh.clone(); + scene.add(clone); + trashArray.push(clone); + spawn(clone); + } +}); + +function spawn(obj) { + const a = Math.random() * Math.PI * 2; + const r = Math.random() * 18; + obj.position.set(Math.cos(a) * r, 0.3, Math.sin(a) * r); +} + +// 5. MOVIMENTO E COLLISIONI +const keys = {}; +document.onkeydown = (e) => keys[e.code] = true; +document.onkeyup = (e) => keys[e.code] = false; + +function animate() { + requestAnimationFrame(animate); + if (controls.isLocked) { + if (keys['KeyW']) controls.moveForward(0.15); + if (keys['KeyS']) controls.moveForward(-0.15); + if (keys['KeyA']) controls.moveRight(-0.15); + if (keys['KeyD']) controls.moveRight(0.15); + camera.position.y = 1.6; + + // Controllo collisioni + const pPos = camera.position.clone(); + pPos.y -= 1.0; + trashArray.forEach(t => { + if (new THREE.Box3().setFromObject(t).expandByScalar(0.3).containsPoint(pPos)) { + score++; + document.getElementById('score').innerText = score; + spawn(t); + } + }); + } + renderer.render(scene, camera); +} animate(); \ No newline at end of file diff --git a/style.css b/style.css index 709990e..3c54309 100755 --- a/style.css +++ b/style.css @@ -1,178 +1,214 @@ -:root { - --top: 10px; - --border: 20px; - --text: 1.5rem; -} -body { - margin: 0; - overflow: hidden; - font-family: sans-serif; -} -#punti { - position: absolute; - top: var(--top); - left: var(--border); - color: white; - font-size: var(--text); - pointer-events: none; - display: none; -} -#tempo { - position: absolute; - top: var(--top); - right: var(--border); - color: white; - font-size: var(--text); - pointer-events: none; - display: none; -} -#punti, #tempo { - position: absolute; - top: var(--top); - color: white; - font-size: var(--text); - pointer-events: none; - display: none; - /* Aggiungi questa riga */ - text-shadow: 2px 2px 4px rgba(0, 0, 0, 0.7); - font-weight: bold; -} - -/* Cursore */ -#crosshair { - position: absolute; - top: 50%; - left: 50%; - transform: translate(-50%, -50%); - color: white; - font-size: 24px; - font-family: sans-serif; - pointer-events: none; - display: none; /* Sarà visualizzato solo durante il gioco */ - z-index: 10; -} - -/* Schermata iniziale del gioco */ -#start { - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; - overflow: hidden; - color: white; - font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; - /* Queste 4 righe garantiscono la centratura totale */ - display: flex; - flex-direction: column; - justify-content: center; - align-items: center; - z-index: 100; /* Assicurati che sia sopra al renderer di Three.js */ -} - -/* Video a tutto schermo */ -#bg-video { - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; - z-index: -1; - object-fit: cover; /* Riempie lo schermo senza deformare */ -} - -.overlay { - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; - background: rgba(0, 0, 0, 0.4); - z-index: 0; - pointer-events: none; /* Il click attraversa l'overlay e arriva a #start */ -} - -.content { - position: relative; - z-index: 1; - height: 100%; - width: 100%; /* Aggiunto */ - display: flex; - flex-direction: column; -} - -/* Divisione 50% Sopra */ -.top-section { - flex: 1; - display: flex; - align-items: center; - justify-content: center; -} - -.main-title { - max-width: 80%; - height: auto; -} - -/* Divisione 50% Sotto */ -.bottom-section { - flex: 1; - display: flex; - flex-direction: row; - width: 100%; /* Forza l'espansione orizzontale */ - align-items: flex-start; - padding-top: 20px; -} - -.item { - /* flex: 1 0 33%; significa: cresci, non restringerti, base 33% */ - flex: 1 0 33.33%; - display: flex; - justify-content: center; - text-align: center; -} - -/* Styling dei Controlli (KBD) */ -.controls-box { - width: 100%; - display: flex; - flex-direction: column; - align-items: center; -} -.controls-box h3 { - margin-bottom: 10px; - font-size: 1.2rem; - text-transform: uppercase; -} -.controls-box h3, .controls-box p, .pulse-text { - margin-top: 0; -} - -kbd { - background-color: #eee; - border-radius: 3px; - border: 1px solid #b4b4b4; - box-shadow: 0 1px 1px rgba(0,0,0,0.2), 0 2px 0 0 rgba(255,255,255,0.7) inset; - color: #333; - display: inline-block; - font-size: 0.85em; - font-weight: 700; - line-height: 1; - padding: 2px 4px; - white-space: nowrap; - margin: 0 2px; -} - -/* Animazione per "Clicca per giocare" */ -.pulse-text { - font-size: 1.5rem; - text-transform: uppercase; - letter-spacing: 2px; - animation: pulse 2s infinite; -} - -@keyframes pulse { - 0% { opacity: 1; } - 50% { opacity: 0.4; } - 100% { opacity: 1; } +:root { + --top: 10px; + --border: 20px; + --text: 1.5rem; +} +body { + margin: 0; + overflow: hidden; + font-family: sans-serif; +} +#punti { + position: absolute; + top: var(--top); + left: var(--border); + color: white; + font-size: var(--text); + pointer-events: none; + display: none; +} +#tempo { + position: absolute; + top: var(--top); + right: var(--border); + color: white; + font-size: var(--text); + pointer-events: none; + display: none; +} +#punti, #tempo { + position: absolute; + top: var(--top); + color: white; + font-size: var(--text); + pointer-events: none; + display: none; + /* Aggiungi questa riga */ + text-shadow: 2px 2px 4px rgba(0, 0, 0, 0.7); + font-weight: bold; +} + +/* Cursore */ +#crosshair { + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + color: white; + font-size: 24px; + font-family: sans-serif; + pointer-events: none; + display: none; /* Sarà visualizzato solo durante il gioco */ + z-index: 10; +} + +/* Schermata iniziale del gioco */ +#start { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + overflow: hidden; + color: white; + font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; + /* Queste 4 righe garantiscono la centratura totale */ + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + z-index: 100; /* Assicurati che sia sopra al renderer di Three.js */ +} + +/* Video a tutto schermo */ +#bg-video { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + z-index: -1; + object-fit: cover; /* Riempie lo schermo senza deformare */ +} + +.overlay { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + background: rgba(0, 0, 0, 0.4); + z-index: 0; + pointer-events: none; /* Il click attraversa l'overlay e arriva a #start */ +} + +.content { + position: relative; + z-index: 1; + height: 100%; + width: 100%; /* Aggiunto */ + display: flex; + flex-direction: column; +} + +/* Divisione 50% Sopra */ +.top-section { + flex: 1; + display: flex; + align-items: center; + justify-content: center; +} + +.main-title { + width: 25%; + height: auto; +} + + +/* Divisione 50% Sotto */ +.bottom-section { + flex: 1; + display: flex; + flex-direction: row; + width: 100%; /* Forza l'espansione orizzontale */ + align-items: flex-start; + padding-top: 20px; +} + +.item { + /* flex: 1 0 33%; significa: cresci, non restringerti, base 33% */ + flex: 1 0 33.33%; + display: flex; + justify-content: center; + text-align: center; +} + +/* Styling dei Controlli */ +.controls-box { + width: 100%; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + height: 100%; + color: white; + text-shadow: 2px 2px 4px rgba(0,0,0,0.8); + font-family: 'Press Start 2P', cursive; +} + +.controls-box h3 { + margin-bottom: 10px; + font-size: 1.4rem; + text-transform: uppercase; + text-align: center; +} + +.controls-box p { + margin: 6px 0; + font-size: 1.1rem; + text-align: center; +} + +/* Stile dei tasti */ +.controls-box kbd { + background-color: #5e5d5d; + color: #fff; + padding: 4px 8px; + border-radius: 4px; + font-family: monospace; + font-weight: bold; + margin: 6px 0; +} + +/* Box delle istruzioni */ +.instructions-box { + width: 100%; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + height: 100%; + color: white; + text-shadow: 2px 2px 4px rgba(0,0,0,0.8); + font-family: 'Press Start 2P', cursive; +} + +.instructions-box h3 { + margin-bottom: 10px; + font-size: 1.4rem; + text-transform: uppercase; + text-align: center; +} + +.instructions-box p { + margin: 6px 0; + font-size: 1.1rem; + text-align: center; +} + + + + +/* Animazione per "Clicca per giocare" */ +.pulse-text { + font-size: 1.5rem; + text-transform: uppercase; + letter-spacing: 2px; + animation: pulse 2s infinite; +} + +@keyframes pulse { + 0% { opacity: 1; } + 50% { opacity: 0.4; } + 100% { opacity: 1; } } \ No newline at end of file diff --git a/titolo.png b/titolo.png new file mode 100755 index 0000000000000000000000000000000000000000..ff979ea204c6e32eac1a7efb575cb2fc3546cfaa GIT binary patch literal 45510 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 e{uKT%4F4Z?hj)d^vB#nS0000