Files
giochino/docs/LEZIONI.md
T

2.3 KiB

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

    try { /* codice */ } catch(e) {
      X.fillStyle='red'; X.fillText('ERR:'+e.message,10,20);
    }
    
  5. Gestire tastiera in modo difensivo

    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

Stato del repository Gitea

La repository truetype/giteo è stata creata su http://192.168.0.183:8085 ma contiene il codice non funzionante.