Skip to content

Final project of "Software Engineering" course - "Prova Finale di Ingegneria del Software" - Politecnico di Milano - A.A. 2021-2022

License

Notifications You must be signed in to change notification settings

simoneponginibbio/Board_Game_Implementation

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Game Board Implementation

License: MIT

Final project of "Ingegneria del Software" 2021-2022 held by Professor Gianpaolo Cugola at Politecnico di Milano.

alt text

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.

Regole del gioco:

Requisiti del progetto:

Documentazione

UML

I seguenti diagrammi delle classi rappresentano rispettivamente il diagramma UML riassuntivo e il diagramma UML di dettaglio che mostrano come è stato progettato il software:

Peer review

Review al progetto del gruppo 10:

Review del gruppo 55 al nostro pregetto:

JavaDoc

La seguente documentazione include una descrizione delle classi e dei metodi utilizzati, può essere consultata al seguente indirizzo: Javadoc

Test di unità

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

Librerie e Plugins

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.

Funzionalità

Funzionalità Sviluppate

  • 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.

Esecuzione dei JAR

Questo progetto richiede una versione di Java 17 o superiore per essere eseguito correttamente.

Client

Il client viene eseguito scegliendo l'interfaccia con cui giocare, le possibili scelte sono da linea di comando (CLI) o interfaccia grafica (GUI).

  • CLI

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
  • GUI

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

Server

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.

Componenti del gruppo

Copyright and license

This project is copyright 2023.

Licensed under the MIT License; you may not use this software except in compliance with the License.

About

Final project of "Software Engineering" course - "Prova Finale di Ingegneria del Software" - Politecnico di Milano - A.A. 2021-2022

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Java 100.0%