Aggiungi documentazione: requisiti, implementazione, lezioni apprese
This commit is contained in:
1 parent
d1fd88b5ff
commit
de45b6c3b0
6 files changed
+500
-210
No files matched your search
@@ -0,0 +1,62 @@
|
||||
# Lezioni Apprese e Prossimi Passi
|
||||
|
||||
## Errori commessi
|
||||
|
||||
1. **Sovrainingegneria:** Ho creato troppe varianti di server e codice senza consolidare
|
||||
2. **Mancanza di test incrementali:** Ogni riscrittura completa impediva di isolare i bug
|
||||
3. **Assunzioni non verificate:** Ho assunto che frecce standard funzionassero, che Canvas rispondesse, che il loop JS non lanciasse eccezioni
|
||||
4. **Debug "alla cieca":** Senza console del browser accessibile, non potevo vedere gli errori reali
|
||||
5. **Nessuna architettura chiara:** Mescolare logica di rendering, input e stato in un unico file monolitico ha creato accoppiamento
|
||||
|
||||
## Cosa farebbe funzionare
|
||||
|
||||
### Approccio consigliato per il prossimo tentativo
|
||||
|
||||
1. **Iniziare con un prototipo HTML puro**
|
||||
- Menu come elementi HTML (non Canvas)
|
||||
- Nessun JavaScript per il menu
|
||||
- Solo click su pulsanti
|
||||
|
||||
2. **Separare rendering e logica**
|
||||
- Canvas SOLO per il gioco
|
||||
- HTML per menu e UI
|
||||
|
||||
3. **Testare ogni meccanica isolatamente**
|
||||
- Prima: solo movimento giocatore
|
||||
- Poi: solo disco che si muove
|
||||
- Poi: interazione disco-giocatore
|
||||
- Infine: IA e punteggio
|
||||
|
||||
4. **Aggiungere try-catch con visibilizzazione errori**
|
||||
```javascript
|
||||
try { /* codice */ } catch(e) {
|
||||
X.fillStyle='red'; X.fillText('ERR:'+e.message,10,20);
|
||||
}
|
||||
```
|
||||
|
||||
5. **Gestire tastiera in modo difensivo**
|
||||
```javascript
|
||||
var up = ['ArrowUp','KeyW','KeyI'];
|
||||
var dn = ['ArrowDown','KeyS','KeyK'];
|
||||
// Testare effettivamente quali codici arrivano
|
||||
```
|
||||
|
||||
## Suggerimento alternativo
|
||||
|
||||
Considerare l'uso di **pygame** (Python) invece di JavaScript/Canvas:
|
||||
- Più semplice da debuggare
|
||||
- Game loop più robusto
|
||||
- Input gestito via eventi pygame
|
||||
- Sarebbe necessario un server che serva un canvas via WebSocket o un'applicazione desktop
|
||||
|
||||
## Riferimenti utili
|
||||
|
||||
- [Windjammers Wiki](https://windjammers.fandom.com/wiki/Windjammers)
|
||||
- [Fandom Wiki (regole dettagliate)](https://snk.fandom.com/wiki/Windjammers)
|
||||
- [Gitea MCP](https://gitea.com/gitea/gitea-mcp) — server MCP per integrazione Gitea
|
||||
- [opencode-review-gitea](https://github.com/ccsert/opencode-review-gitea) — skill per review PR su Gitea
|
||||
- [Kitbitz MCP](https://kitbitz.art/docs/mcp) — endpoint MCP per asset grafici CC0
|
||||
|
||||
## Stato del repository Gitea
|
||||
|
||||
La repository `truetype/giteo` è stata creata su http://192.168.0.183:8085 ma contiene il codice non funzionante.
|
||||
Reference in new issue
Block a user