diff --git a/README.md b/README.md index 0706099..b1bf421 100644 --- a/README.md +++ b/README.md @@ -17,10 +17,10 @@ ### 🚩 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. +- [⚠️] **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. +- [⚠️] **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. @@ -35,11 +35,12 @@ - [❌] **Personaggio:** Cilindro che rappresenta il personaggio (fatto per collisioni piu' precise) ### ♻️ 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. +- [⚠️] **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. +- [❌] **Rifinitura (Polish):** Abbellimento grafico. ### πŸ† Fase Finale: Classifica & Record - [❌] **Calcolo Punteggio:** Elaborazione dei risultati finali e calcolo dei bonus velocitΓ . @@ -53,7 +54,7 @@ ## πŸ“‚ 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). +* `/js` - Logica delle due fasi del gioco (fase1.js, fase2.js). * `/php` - Script per il backend (`db_connect.php`, `save_score.php`). -* `/games` - Pagine HTML dedicate alle sessioni di gioco (`fase1.html`, `fase2.html`). +* `/pages` - Pagine HTML dedicate alle varie pagine del gioco (`fase1.html`, `fase2.html`). * `index.php` - Homepage e controller principale del progetto. \ No newline at end of file diff --git a/models/rifiuto.glb b/assets/models/rifiuto.glb similarity index 100% rename from models/rifiuto.glb rename to assets/models/rifiuto.glb diff --git a/textures/rifiuto/Trash_AlbedoTransparency.png b/assets/textures/rifiuto/Trash_AlbedoTransparency.png similarity index 100% rename from textures/rifiuto/Trash_AlbedoTransparency.png rename to assets/textures/rifiuto/Trash_AlbedoTransparency.png diff --git a/textures/rifiuto/Trash_Ambient_Occlusion.png b/assets/textures/rifiuto/Trash_Ambient_Occlusion.png similarity index 100% rename from textures/rifiuto/Trash_Ambient_Occlusion.png rename to assets/textures/rifiuto/Trash_Ambient_Occlusion.png diff --git a/textures/rifiuto/Trash_MetallicSmoothness.png b/assets/textures/rifiuto/Trash_MetallicSmoothness.png similarity index 100% rename from textures/rifiuto/Trash_MetallicSmoothness.png rename to assets/textures/rifiuto/Trash_MetallicSmoothness.png diff --git a/textures/rifiuto/Trash_Normal.png b/assets/textures/rifiuto/Trash_Normal.png similarity index 100% rename from textures/rifiuto/Trash_Normal.png rename to assets/textures/rifiuto/Trash_Normal.png diff --git a/textures/rifiuto/Trash_Roughness.png b/assets/textures/rifiuto/Trash_Roughness.png similarity index 100% rename from textures/rifiuto/Trash_Roughness.png rename to assets/textures/rifiuto/Trash_Roughness.png diff --git a/style.css b/css/fase1.css similarity index 100% rename from style.css rename to css/fase1.css diff --git a/index.php b/index.php new file mode 100644 index 0000000..21ed62c --- /dev/null +++ b/index.php @@ -0,0 +1,16 @@ + 'fase1.html', + 'mid' => 'istruzioniFase2.html', + 'sep' => 'fase2.html', + 'end' => 'risultatiFinali.html', + 'leaderboard' => 'classifica.php', + 'error' => 'error.html' + ]; + $p = $_GET['pagina'] ?? 'start'; + if (!array_key_exists($p, $route)) { + http_response_code(404); + $p = 'error'; + } + include $__DIR__ . '/pages/' . $route[$p]; +?> \ No newline at end of file diff --git a/script.js b/js/fase1.js similarity index 98% rename from script.js rename to js/fase1.js index 4c6a774..139fdd3 100755 --- a/script.js +++ b/js/fase1.js @@ -44,7 +44,7 @@ const trashArray = []; let score = 0; const loader = new GLTFLoader(); -loader.load('models/rifiuto.glb', (gltf) => { +loader.load('assets/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++) { diff --git a/materiale/STRUTTURA.md b/materiale/STRUTTURA.md new file mode 100644 index 0000000..c7b11fc --- /dev/null +++ b/materiale/STRUTTURA.md @@ -0,0 +1,98 @@ +Struttura della cartella del progetto: (temporanea e mmodificabile) +```text +. +β”œβ”€β”€ assets/ +β”‚ β”œβ”€β”€ media/ +β”‚ β”‚ β”œβ”€β”€ img/ +β”‚ β”‚ β”‚ β”œβ”€β”€ titolo.png +β”‚ β”‚ β”‚ └── fase2/ +β”‚ β”‚ β”‚ β”œβ”€β”€ contenitori/ +β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ alluminio.jpeg +β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ carta.jpeg +β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ indifferenziata.jpeg +β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ plastica.jpeg +β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ umido.jpeg +β”‚ β”‚ β”‚ β”‚ └── vetro.jpeg +β”‚ β”‚ β”‚ └── rifiuti/ +β”‚ β”‚ β”‚ β”œβ”€β”€ bicchiereEbottiglia.webp +β”‚ β”‚ β”‚ β”œβ”€β”€ bottiglie.webp +β”‚ β”‚ β”‚ β”œβ”€β”€ bucciaBanana.png +β”‚ β”‚ β”‚ β”œβ”€β”€ giornale.png +β”‚ β”‚ β”‚ β”œβ”€β”€ lattina.png +β”‚ β”‚ β”‚ β”œβ”€β”€ marmellata.png +β”‚ β”‚ β”‚ β”œβ”€β”€ mozziconiSigaretta.png +β”‚ β”‚ β”‚ β”œβ”€β”€ pannolino.png +β”‚ β”‚ β”‚ β”œβ”€β”€ sacchettoPlastica.png +β”‚ β”‚ β”‚ β”œβ”€β”€ scatolaCartone.png +β”‚ β”‚ β”‚ β”œβ”€β”€ scatolaTonno.webp +β”‚ β”‚ β”‚ └── torsoloMela.webp +β”‚ β”‚ └── video/ +β”‚ β”‚ └── background.mp4 +β”‚ β”œβ”€β”€ models/ +β”‚ β”‚ β”œβ”€β”€ rifiuto.glb +β”‚ β”‚ └── tree.glb +β”‚ └── texture/ +β”‚ └── rifiuto/ +β”‚ β”œβ”€β”€ Trash_AlbedoTransparency.png +β”‚ β”œβ”€β”€ Trash_Ambient_Occlusion.png +β”‚ β”œβ”€β”€ Trash_MetallicSmoothness.png +β”‚ β”œβ”€β”€ Trash_Normal.png +β”‚ └── Trash_Roughness.png +β”œβ”€β”€ css/ +β”‚ β”œβ”€β”€ classifica.css +β”‚ β”œβ”€β”€ fase1.css +β”‚ β”œβ”€β”€ fase2.css +β”‚ β”œβ”€β”€ istruzioniFase2.css +β”‚ └── risultatiFinali.css +β”œβ”€β”€ js/ +β”‚ β”œβ”€β”€ fase1.js +β”‚ └── fase2.js +β”œβ”€β”€ materiale/ +β”‚ β”œβ”€β”€ idea gioco.drawio +β”‚ β”œβ”€β”€ idea gioco.png +β”‚ β”œβ”€β”€ ideaRisultato.jpeg +β”‚ β”œβ”€β”€ progetto.txt +β”‚ β”œβ”€β”€ schermata iniziale.png +β”‚ β”œβ”€β”€ STRUTTURA.md +β”‚ └── TODO.txt +β”œβ”€β”€ pages/ +β”‚ β”œβ”€β”€ classifica.php +β”‚ β”œβ”€β”€ fase1.html +β”‚ β”œβ”€β”€ fase2.html +β”‚ β”œβ”€β”€ istruzioniFase2.html +β”‚ └── risultatiFinali.html +β”œβ”€β”€ php/ +β”‚ β”œβ”€β”€ db.php +β”‚ β”œβ”€β”€ save_score.php +β”‚ └── leaderboard_utils.php +β”œβ”€β”€ .gitignore +β”œβ”€β”€ db_iniziale.sql +β”œβ”€β”€ index.php +└── README.md +``` + +Workflow del gioco: +``` +Inizio -> 60s per raccogliere i rifiuti -> Salvataggio del punteggio in localStorage -> Schermata intermedia -> *5s per separare i rifiuti -> Invio dati della partita al database (nome squadra, rifiuti raccolti nella fase 1, rifiuti separati correttamente nella fase 2, punteggio finale, data della partita) -> caricamento schermata finale con classifica ridotta (posizione, squadra, punteggio) e pulsanti per giocare ancora, impostazioni e la classifica completa (classifica.php) con tutti i dati e tutte le partite giocate (classifica ridotta: solo le prime 5/10 partite) +``` + +Indirizzamento pagine in index.php +``` +index.php?p=xxx +index.php?p=start -> include 'fase1.html' (schermata iniziale + prima fase) +index.php?p=mid -> include 'istruzioniFase2.html' (istruzioni per la seconda fase con pulsante per iniziare) +index.php?p=sep -> include 'fase2.html' (separazione dei rifiuti + reindirizzamento a schermata finale) +index.php?p=end -> include 'risultatiFinali.html' (schermata finale + record assoluto (nome squadra, punteggio finale, data) + classifica ridotta + pulsante 'gioca ancora' (-> index.php?p=start) + pulsante per classifica completa (-> _blank::index.php?p=leaderboard)) +index.php?p=leaderboard -> classifica globale dei risultati con visualizzazione completa dei dati +``` + +Array associativo con indirizzamenti da parametri get +```php +$route = [ + 'start' => 'fase1.html', + 'mid' => 'istruzioniFase2.html', + 'sep' => 'fase2.html', + 'end' => 'risultatiFinali.html', + 'leaderboard' => 'classifica.php' +] +``` \ No newline at end of file diff --git a/progetto/TODO.txt b/materiale/TODO.txt similarity index 100% rename from progetto/TODO.txt rename to materiale/TODO.txt diff --git a/progetto/idea gioco.drawio b/materiale/idea gioco.drawio similarity index 100% rename from progetto/idea gioco.drawio rename to materiale/idea gioco.drawio diff --git a/progetto/idea gioco.png b/materiale/idea gioco.png similarity index 100% rename from progetto/idea gioco.png rename to materiale/idea gioco.png diff --git a/progetto/progetto.txt b/materiale/progetto.txt similarity index 100% rename from progetto/progetto.txt rename to materiale/progetto.txt diff --git a/progetto/schermata finale.png b/materiale/schermata finale.png similarity index 100% rename from progetto/schermata finale.png rename to materiale/schermata finale.png diff --git a/progetto/schermata iniziale.png b/materiale/schermata iniziale.png similarity index 100% rename from progetto/schermata iniziale.png rename to materiale/schermata iniziale.png diff --git a/pages/error.html b/pages/error.html new file mode 100644 index 0000000..f5a4ad0 --- /dev/null +++ b/pages/error.html @@ -0,0 +1,12 @@ + + + + + + Errore + + +

Errore

+

La pagina richiesta non Γ¨ stata trovata.

+ + \ No newline at end of file diff --git a/index.html b/pages/fase1.html similarity index 93% rename from index.html rename to pages/fase1.html index 6420f4b..8121ba2 100755 --- a/index.html +++ b/pages/fase1.html @@ -3,7 +3,7 @@ Semplice Island FPS - +
@@ -41,6 +41,6 @@ } } - + \ No newline at end of file