Design di Dettaglio

L’interfaccia utente di Progress Quest è progettata con ScalaFX, sfruttando layout a pannelli (BorderPane, HBox, VBox) per una chiara separazione delle sezioni principali: informazioni del personaggio, inventario, mondo, skill, missioni, diario e combat log.

La generazione del personaggio avviene in una schermata dedicata (PlayerGenerationUi.scala), dove l’utente può randomizzare razza, classe, comportamento e attributi tramite bottoni interattivi. Una volta confermato, si accede all’interfaccia principale (UI.scala), organizzata in:

  • Top: Pannelli per personaggio, equipaggiamento e statistiche.
  • Center: Inventario, mondo (zona attuale), skill e missione corrente.
  • Bottom: Diario delle azioni e log dei combattimenti.

Ogni pannello è creato tramite funzioni dedicate, favorendo riuso e chiarezza del codice. Gli eventi utente sono gestiti tramite onAction di ScalaFX, mentre la maggior parte delle azioni di gioco avviene in modo automatico, secondo la filosofia zero-player.

Pattern e Scelte di Design

  • MVC/MVVM: Separazione tra View (ScalaFX), Model (strutture dati e logica di dominio), Controller (gestione eventi e logica di gioco).
  • Factory/Builder: Per la generazione casuale di attributi, razze, classi e comportamenti del personaggio.
  • Singleton/Object: Uso di oggetti Scala per gestire costanti, utility e collezioni di mostri/eventi.

Estendibilità e Manutenibilità

La struttura modulare e l’uso di pattern come MVC e Factory rendono il sistema facilmente estendibile: nuove funzionalità possono essere aggiunte creando nuovi pannelli o estendendo i modelli e i controller esistenti. La separazione delle responsabilità facilita la manutenzione e l’evoluzione del progetto.