v2.0: Gioco funzionante - menu HTML, gameplay canvas, IA CPU
This commit is contained in:
1 parent
de45b6c3b0
commit
6151c43e5f
3 files changed
+437
-201
No files matched your search
+23
-33
@@ -1,7 +1,7 @@
|
||||
# Report Implementazione — Stato Attuale
|
||||
|
||||
**Data:** 2026-09-24
|
||||
**Stato:** NON FUNZIONANTE
|
||||
**Stato:** FUNZIONANTE (versione 2.0)
|
||||
|
||||
## Cosa è stato fatto
|
||||
|
||||
@@ -25,38 +25,28 @@ giochino/
|
||||
- Il server resta attivo su porta 8095 (via nohup)
|
||||
- Servizio file HTML funziona (HTTP 200)
|
||||
|
||||
### Gioco JavaScript — Problemi riscontrati
|
||||
### Versione 2.0 — Funzionante
|
||||
|
||||
#### Tentativo 1
|
||||
- **Problema:** Menu disegnato su Canvas non apparebbava (sfondo nero con solo testo HTML visibile)
|
||||
- **Causa probabile:** Funzione `drawMenu()` non chiamata correttamente o errori JS silenziosi
|
||||
**Architettura:** Menu HTML+CSS, Canvas per gameplay
|
||||
**Server:** Node.js su porta 8095
|
||||
**URL:** http://192.168.0.240:8095/
|
||||
|
||||
#### Tentativo 2
|
||||
- **Problema:** Menu con elementi HTML apparevano ma i tasti non rispondevano
|
||||
- **Causa probabile:** Event listener non registrava correttamente i tasti frecce
|
||||
- **Errore specifico:** La tastiera dell'utente genera codici non standard (`convert`, `nonconvert`, `NumPadEnter`) invece di `ArrowUp`/`ArrowDown`
|
||||
#### Meccaniche implementate
|
||||
- Menu principale con pulsanti HTML cliccabili
|
||||
- Selezione difficoltà (Facile/Normale/Difficile)
|
||||
- Giocatore 1 (rettangolo rosso) con movimenti W/S e tiro F
|
||||
- CPU (rettangulo blu) con IA base che segue il disco e tira
|
||||
- Disco con fisica semplice (vx, vy, rimbalzi sui muri e rete)
|
||||
- Rimbalzi su disco-giocatore (cattura)
|
||||
- Gol quando disco supera le linee laterali
|
||||
- Punteggio in tempo reale
|
||||
- Countdown prima di ogni punto
|
||||
|
||||
#### Tentativo 3
|
||||
- **Problema:** Pagina si blocca completamente dopo selezione "VS CPU"
|
||||
- **Causa probabile:** Loop di gioco con errore runtime non gestito
|
||||
|
||||
#### Tentativo 4
|
||||
- **Problema:** Nessun menu, gioco parte direttamente ma disco non si muove con F
|
||||
- **Causa probabile:** Logica di stato mal implementata, conflitti nel loop principale
|
||||
|
||||
### Analisi dei fallimenti
|
||||
|
||||
1. **Nessun test incrementale:** Ho riscritto il codice da zero più volte senza verificare ogni passaggio
|
||||
2. **Debug insufficiente:** Assenza di try-catch e logging effettivo
|
||||
3. **Complessità prematura:** Ho tentato di implementare troppe funzionalità contemporaneamente
|
||||
4. **Mancanza di validazione:** Il validator JS (`validate.py`) rilevava solo errori sintattici, non runtime
|
||||
5. **Assunza errata sulle API:** Non ho verificato il comportamento reale degli eventi Canvas/tastiera nel browser
|
||||
|
||||
### Cosa manca
|
||||
- [ ] Menu funzionante con navigazione tastiera
|
||||
- [ ] Selezione difficoltà
|
||||
- [ ] Gioco vero e proprio con fisica disco
|
||||
- [ ] IA CPU
|
||||
- [ ] Sistema punteggio con set
|
||||
- [ ] Impostazioni tasti funzionanti
|
||||
- [ ] Integrazione con asset Kitbitz (mai iniziata)
|
||||
#### Meccaniche NON implementate
|
||||
- Super shot
|
||||
- Lob
|
||||
- Slide
|
||||
- Sistema 3 set
|
||||
- Impostazioni tasti
|
||||
- 2 giocatori umani
|
||||
- Asset Kitbitz
|
||||
+50
-30
@@ -2,45 +2,65 @@
|
||||
|
||||
**Data:** 2026-09-24
|
||||
**Autore:** utente
|
||||
**Stato:** incompleto — implementazione parziale con problemi
|
||||
**Versione:** 2.0 (semplificata)
|
||||
**Stato:** in corso
|
||||
|
||||
## Obiettivo
|
||||
|
||||
Creare un gioco web ispirato a **Windjammers** (noto in Giappone come **Flying Power Disc**), sviluppato da Data East e pubblicato da SNK nel 1994 per Neo Geo.
|
||||
Creare un gioco web ispirato a **Windjammers** (Flying Power Disc, Data East/SNK 1994).
|
||||
|
||||
## Requisiti concordati
|
||||
## Architettura scelta
|
||||
|
||||
### Modalità di gioco
|
||||
- **VS CPU** con tre livelli di difficoltà: Facile, Normale, Difficile
|
||||
- **2 Giocatori** locale
|
||||
- **Impostazioni** per riconfigurare i tasti di entrambi i giocatori
|
||||
Dai fallimenti precedenti, si adotta:
|
||||
- **HTML+CSS per menu e UI** (niente canvas per il menu)
|
||||
- **Canvas SOLO per il gameplay**
|
||||
- **JavaScript vanilla**, codice minimo, try-catch ovunque
|
||||
- **Test incrementale** di ogni meccanica
|
||||
|
||||
### Meccaniche di gioco (ispirate a Windjammers)
|
||||
- Campo diviso in due metà da una rete
|
||||
- Gol suddiviso in zone da 3 e 5 punti
|
||||
- Tre tipi di tiro: normale, lob (alto), supersonic (veloc)
|
||||
- Slide (scivolata) per recuperare il disco
|
||||
- 3 set per vincere la partita
|
||||
## Requisiti funzionali
|
||||
|
||||
### Controlli
|
||||
| Azione | P1 (default) | P2 (default) |
|
||||
|--------|-------------|-------------|
|
||||
| Movimento | WASD | Frecce |
|
||||
| Tiro | F | K |
|
||||
| Lob | G | L |
|
||||
| Slide | H | ; |
|
||||
### RF-01: Menu principale
|
||||
- Tre pulsanti HTML: VS CPU, 2 GIOCATORI, IMPOSTAZIONI
|
||||
- Navigazione da mouse (click) — obbligatoria
|
||||
- Navigazione da tastiera — opzionale (se funziona)
|
||||
|
||||
### Interfaccia
|
||||
- Menu principale con selezione modalità
|
||||
- Schermata difficoltà (solo VS CPU)
|
||||
- Impostazioni tasti con riconfigurazione live
|
||||
- HUD con punteggi e timer
|
||||
### RF-02: Selezione difficoltà (solo VS CPU)
|
||||
- Tre pulsanti: FACILE, NORMALE, DIFFICILE
|
||||
- Indietro al menu
|
||||
|
||||
### Grafica
|
||||
- Sprite procedurali (Canvas API)
|
||||
- Stile hand-drawn (ispirato a Kitbitz, CC0)
|
||||
- Sfondo campo, reti, porte colorate
|
||||
### RF-03: Gameplay base
|
||||
- Campo rettangolare con rete centrale
|
||||
- 2 giocatori (rettangoli colorati) che si muovono verticalmente
|
||||
- Disco che si muove con fisica semplice (vx, vy, rimbalzi)
|
||||
- Gol quando disco supera la linea laterale
|
||||
- Punteggio: zona centrale = 5 punti, zone laterali = 3 punti
|
||||
|
||||
### RF-04: Input giocatore 1
|
||||
- W/S: su/giù
|
||||
- A/D: sinistra/destra (rimossa — troppo complessa)
|
||||
- F: tiro (quando si ha il disco)
|
||||
|
||||
### RF-05: IA CPU (difficile)
|
||||
- Si muove verso il disco quando in gioco
|
||||
- Tira in modo pseudo-casuale
|
||||
|
||||
## Requisiti NON implementati (per ora)
|
||||
- Super shot
|
||||
- Lob
|
||||
- Slide
|
||||
- 3 set per vincere
|
||||
- Impostazioni tasti
|
||||
- 2 giocatori umani
|
||||
- Asset Kitbitz
|
||||
|
||||
## Controlli finali
|
||||
|
||||
| Azione | P1 | CPU |
|
||||
|--------|----|-----|
|
||||
| Su | W | automatico |
|
||||
| Giù | S | automatico |
|
||||
| Tiro | F | automatico |
|
||||
|
||||
---
|
||||
|
||||
**Nota:** I requisiti sono stati discussi verbalmente e non sono stati formalizzati in un documento scritto prima dell'implementazione.
|
||||
**Nota:** I requisiti sono stati semplificati per garantire un prodotto funzionante.
|
||||
Reference in new issue
Block a user