La logica del gioco è già stata analizzata nello Sprint1. Utiliziamo quindi il risultato ottenuto, che costituisce un sottosistema funzionante, come punto di partenza per questo nuovo lavoro (deployed in un file conway26Java-1.0.jar).
L'obiettivo di questo Sprint è andare ad estendere il sistema realizzato in precedenza con un nuovo dispositivo di I/O.
Per come era stato pensato il sistema questo è assolutamente possibile, senza dover andare a modificare la logica dell'applicazione: infatti era previsto un contratto (
IOutDev
) pensato per fare in modo che sia il dispositivo a dipendere dall'applicazione e non viceversa (principio di
inversione delle dipendenze).
Swing è una delle opzioni per introdurre una visualizzazione di tipo grafico all'interno del gioco.
A differenza della console, la GUI genera degli eventi: click sulle celle per cambiarne lo stato e sui pulsanti per iniziare e fermare il gioco. Iniettando il controller nella GUI è possibile delegare le azioni dell'utente ai metodi di GameController.
La GUI deve reagire ai cambiamenti del modello, poiché il gioco evolve da solo in un thread separato. Il metodo displayGrid() agisce come punto di contatto tra logica e rappresentazione: ogni volta che viene invocato dal controller la GUI deve ridisegnare la griglia.
GIT repo: https://github.com/ariannabuffoni/IngegneriaSistemiSoftware2026.git