Skip to the content.

Capitolo 5: Implementazione

5.1 Sviluppo collaborativo

Nelle fasi iniziali il team si è concentrato sulla progettazione e implementazione delle basi dell’applicativo con un approccio collaborativo, procedendo alla suddivisione dei vari componenti solo successivamente. In particolare la struttura dell’architettura generale, il GameEngine e la parte grafica della mappa di gioco sono state progettate e implementate in collaborazione dall’intero team di sviluppo.

5.2 Sviluppo individuale

Alberto Di Girolamo

Il mio contributo alla realizzazione del progetto si è concentrato principalmente sulla creazione del virus e sulla sua logica di infezione, sia all’interno di una regione sia per quanto riguarda l’espansione del virus su regioni sane tramite la logica esterna. Inoltre, ho gestito e sviluppato i PowerUp, occupandomi di tutti gli aspetti relativi alla loro struttura interna e alla logica di elaborazione.

Per quanto riguarda la parte grafica, ho progettato e implementato la griglia che visualizza i PowerUp all’interno del menu, oltre a realizzare il Launcher di gioco.

Di seguito verranno elencate le classi e i file su cui ho lavorato singolarmente, con riferimento ai package:

infection:

powerUp:

view.menu:

view.launcher:

controller:

Per ogni componente descritto in seguito, ho impiegato meccanismi di Scala avanzati per garantire un design efficiente e scalabile.

L’utilizzo dei meccanismi di scala avanzati per la progettazione del virus e dell’InfectionHandler ha permesso di ottenere un codice modulare, flessibile e mantenibile. Questo approccio ha contribuito a garantire maggiore robustezza al progetto, fornendo una solida base per l’eventuale aggiunta di nuove funzionalità e miglioramenti al gioco nel tempo.

Durante la fase iniziale di analisi dei requisiti del progetto, ho assunto il ruolo di Product Owner. Poiché tutti i membri del gruppo erano sviluppatori, l’importanza di questo ruolo è stata relativamente ridimensionata. Tuttavia, ho collaborato con l’Esperto di Dominio e ho preso decisioni sulle priorità di sviluppo del progetto e sulle scelte necessarie per rispettare le scadenze settimanali e la deadline finale. Inoltre, ho coordinato parzialmente il lavoro del gruppo in qualità di Product Owner.

Nicolò Malucelli

Il mio contributo nella realizzazione del progetto ha riguardato inizialmente il caricamento dinamico delle configurazioni di gioco (regioni, rotte e virus).

Terminata questa parte, mi sono dedicato alla realizzazione dei DNA point e di tutto ciò che ne concerne: logica di spawn, collezionabilità e utilizzo. Nello specifico, durante quest’ultimo punto ho contribuito alla realizzazione del PowerUpManager. Durante questa fase ho anche avuto modo di interagire anche con la parte grafica, rendendo i DNA point veri e propri pulsanti cliccabili sulla mappa di gioco.

Infine, per quanto riguarda la parte grafica e di interazione con l’utente, ho contribuito alla realizzazione del pannello di dettaglio delle regioni ed ho reso interagibile la mappa di gioco, permettendo così di riconoscere la regione cliccata.

Di seguito sono elencate le classi a cui ho lavorato con riferimento ai package:

Di seguito sono elencati i meccanismi avanzati di Scala da me utilizzati:

In qualità di esperto del dominio, mi sono occupato di verificare la qualità del risultato dal punto di vista dell’utente finale, contribuendo ad un corretto bilanciamento del gioco.

Filippo Venturini

Il mio contributo nella realizzazione del progetto ha riguardato principalmente la gestione del mondo di gioco, mi sono occupato quindi della progettazione e dell’implementazione di tutto ciò che riguarda le regioni, le rotte e il mondo. Mi sono inoltre occupato dello sviluppo del vaccino ed ho contribuito alla realizzazione del PowerUpManager. Infine per quanto riguarda la parte grafica sono responsabile della realizzazione del pannello di infezione generale e dei pannelli del menu riguardanti le caratteristiche del Virus e i dettagli dei PowerUp.

Di seguito verranno elencate le classi e i file su cui ho lavorato singolarmente, con riferimento ai package:

world:

vaccine:

powerUp:

view.menu:

view.game:

Ora si procede a descrivere i meccanismi di Scala avanzati utilizzati (con riferimento al componente in cui si trovano) non già approfonditi nel capitolo relativo al design di dettaglio:

5.3 Testing

Il testing è stato una fase fondamentale nello sviluppo di PlagueDotScala. In questo capitolo, descriveremo l’approccio utilizzato per il testing, compresi gli strumenti e le tecnologie adottate per garantire la qualità e la robustezza del nostro progetto.

5.3.1 Testing tramite TDD (Test-Driven Development)

Per assicurare che il nostro codice funzioni correttamente fin dalle prime fasi di sviluppo, abbiamo seguito l’approccio del Test-Driven Development (TDD). Questo metodo prevede di scrivere i test prima di sviluppare il codice effettivo. In altre parole, abbiamo definito i requisiti e le specifiche del nostro gioco in termini di test automatizzati, e solo successivamente abbiamo implementato le funzionalità per far sì che i test passassero. Questo processo iterativo ci ha aiutato a individuare bug e problemi fin dalla fase iniziale, permettendoci di mantenere un alto grado di affidabilità nel codice prodotto.

5.3.2 Utilizzo di GitHub Actions per il Continuous Integration

Per automatizzare il processo di testing e garantire che ogni modifica apportata al codice sia soggetta a una serie di test, abbiamo sfruttato GitHub Actions. Tramite questa piattaforma, abbiamo configurato una serie di workflow che vengono eseguiti automaticamente ogni volta che viene effettuata una push o viene aperta una pull request nel nostro repository GitHub. Questi workflow includono i test implementati con JUnit (vedi sezione successiva), e la loro esecuzione ci permette di individuare tempestivamente eventuali errori introdotti da nuove modifiche.

5.3.3 Utilizzo di JUnit per i test unitari

JUnit è stato lo strumento principale utilizzato per scrivere e gestire i test unitari nel nostro progetto. Abbiamo suddiviso le diverse funzionalità del gioco in unità separate e per ciascuna di esse abbiamo scritto una serie di test specifici. I test unitari coprono le seguenti sezioni del nostro gioco:

Vai a Design di Dettaglio Torna alla Home Vai a Retrospettiva