Architettura - IngSW-unipv/Progetto-B21 GitHub Wiki
MVC
L'architettura utilizzata a livello concettuale per questo progetto è del tipo MVC (Model - View - Controller) Nello schema architetturale MVC l'applicazione viene suddivisa in tre gruppi principali di componenti: Model, View e Controller. Questo schema consente di realizzare la separazione delle competenze. Grazie all'uso di questo schema, le richieste dell'utente vengono indirizzate a un controller responsabile di interagire con il modello per eseguire le azioni dell'utente e/o recuperare i risultati delle query.
Modello: Il modello è diviso in due modalità di gioco, singleplayer e multiplayer. Nel singleplayer ci sono dei Player, che sono un umano e tre bot, e che sono divisi in due Team. I Player interagiscono con un Game, che tiene le informazioni relative allo stato della partita. Alla fine i punti sono calcolati da un oggetto Calculator. Nel multiplayer si ha un Client che interagisce con un server utilizzando uno stub ClientHandler. Sul server viene simulata una partita MultiplayerGame, a cui si collegano da 1 a 4 giocatori che sono rappresentati dai loro Handler, che possono essere anche di tipo BotHandler se non si raggiunge il numero di 4 giocatori. Ad ogni modifica dello stato di gioco, viene inviata una notifica a tutti gli Handler.
Controller: Le classi di controllo gestiscono l'accoppiamento tra GUI e modello. Per gestire l'input dell'utente si utilizza un thread PlayerThread.
View: È la vista dell'utente, che comprende le interfacce grafiche, i bottoni e la grafica delle carte.
Server/Client
Si utilizza un'architettura Server/Client basata su RMI. Il client si collega al server e si registra, per cui gli viene assegnato un ClientHandler. Server e client si possono chiamare metodi definiti nelle interfacce remote rispettive.
Server: Il server assegna un ClientHandler ad ogni Client.
Client: Il client invoca i metodi offerti dall'interfaccia RemoteClientHandler.

