Il design architetturale del sistema è stato definito a partire dai requisiti funzionali e non funzionali individuati nella fase di analisi. L’obiettivo principale è stato realizzare una struttura modulare, facilmente manutenibile ed estendibile, in grado di garantire una netta separazione delle responsabilità tra i diversi componenti del sistema.
Per la progettazione dell’architettura è stato adottato il pattern MVC (Model-View-Controller). Questo modello consente di separare in maniera chiara la logica dell’applicazione, la sua rappresentazione grafica e la gestione dell’interazione con l’utente. I tre componenti principali del pattern svolgono i seguenti ruoli:
Questa separazione facilita la manutenibilità e l’estensibilità del codice, consentendo di apportare modifiche a una parte del sistema senza influenzare le altre. Questa scelta architetturale favorisce il raggiungimento degli obiettivi di modularità, riusabilità e scalabilità prefissati nel progetto.

Come da pattern MVC, la struttura del progetto è divisa in 3 moduli principali:
GameManager: si occupa di gestire i movimenti all’interno del gioco (sfruttando la GameMap) e l’eventuale vittoria/sconfitta.GameMap: rappresenta la mappa di gioco e si occupa di mantenerla aggiornata, fornendo anche metodi utili per posizionare/prendere/spostare gli elementi al suo interno.GhostBasic: rappresenta i fantasmi all’interno del gioco.SpacMan: rappresenta il Pacman all’interno del gioco.GameController: si occupa di gestire le varie schermate di gioco, comunicando con la view per la rappresentazione grafica e con il GameManager per la logica di gioco.GameLoop: si occupa di gestire l’esecuzione del gioco in tempo reale.InputManager: si occupa di prendere l’input del giocatore e mapparlo nella direzione corrispondente.GameView: è il componente principale della view, contiene la rappresentazione grafica del gioco.SpriteLoader: reperisce le immagini per gli sprites.