Final project of "Ingegneria del Software" 2021-2022 held by Professor Gianpaolo Cugola at Politecnico di Milano.
Il progetto consiste nell'implementazione del gioco da tavolo ERIANTYS in linguaggio Java.
In particolare si tratta di un sistema distribuito composto da un singolo server in grado di gestire più partite contemporaneamente e multipli client (CLI o GUI) che possono partecipare ad una sola partita alla volta.
Sono stati utilizzati il pattern MVC (Model-View-Controller) per progettare l'intero sistema e i socket TCP per la gestione della rete.
Server e client si scambiano messaggi in formato Json per una migliore gestione della comunicazione.
I seguenti diagrammi delle classi rappresentano rispettivamente il diagramma UML riassuntivo e il diagramma UML di dettaglio che mostrano come è stato progettato il software:
Review al progetto del gruppo 10:
Review del gruppo 55 al nostro pregetto:
La seguente documentazione include una descrizione delle classi e dei metodi utilizzati, può essere consultata al seguente indirizzo: Javadoc
I test di Junit puntano a massimizzare la coverage del model (99%) e del controller (100%). Al seguente link è possibile consultare il report della coverage dei test effettuati: Report
Libreria/Plugin | Descrizione |
---|---|
Maven | Strumento di automazione della compilazione utilizzato principalmente per progetti Java. |
Swing | Framework utilizzato per lo svilppo di interfacce grafiche. |
Gson | Libreria per il supporto al parsing di file in formato json. |
JUnit | Framework di unit testing. |
Jacoco | Strumento di supporto al testing per evidenziare le linee di codice coperte dagli unit test. |
- Regole Complete: si considerino le regole per lo svolgimento di partite da 2 o da 3 giocatori, includendo la variante per esperti (si richiede l'implementazione di almeno 8 diverse carte personaggio, a scelta del gruppo).
- CLI: vengono utilizzati ANSI escape codes per stampare lo stato del gioco sul terminale e riscrivere sopra allo stato del turno precedente per una migliore compensione di esso.
- GUI: realizzata con la libreria Swing.
- Socket: gestisce la comunicazione tra il server e i client tramite una connessione TCP.
- 3 Funzionalità Avanzate:
- Carte personaggio: Implementazione di tutte e 12 le carte personaggio.
- Partita a 4 giocatori: Implementazione delle partite a 2, 3 o 4 giocatori.
- Partite multiple: Realizzazione del server in modo che possa gestire più partite contemporaneamente.
Questo progetto richiede una versione di Java 17 o superiore per essere eseguito correttamente.
Il client viene eseguito scegliendo l'interfaccia con cui giocare, le possibili scelte sono da linea di comando (CLI) o interfaccia grafica (GUI).
Per una migliore esperienza di gioco da linea di comando è necessario lanciare il client con un terminale che supporti la codifica UTF-8 e gli ANSI escape codes. Per lanciare il client in modalità CLI digitare su terminale il seguente comando:
java -jar clientcli.jar
Per lanciare il client in modalità GUI sono isponibili due opzioni:
- effettuare doppio click sull'eseguibile clientgui.jar
- digitare su terminale il seguente comando:
java -jar clientgui.jar
Per lanciare il server digitare su terminale il seguente comando:
java -jar server.jar [<port_number>]
Se non si specifica il valore della porta viene usato il valore di default: 61863.
This project is copyright 2023.
Licensed under the MIT License; you may not use this software except in compliance with the License.