Implementazione in Java di una versione multiplayer del gioco da tavolo Adrenalina per il progetto finale di Ingegneria del Software presso il Politecnico di Milano.
- Matteo Pagliazzi - paglias
- Bruno Sciarrone - brunosciarrone
- Andrei Pricope Sergiu - andreipricope
- Regole Complete
- GUI
- Socket
- Funzionalità Aggiuntiva: Partite Multiple
- Java 11
- JavaFX 11
- Libreria
gsonper il parsing deli file JSON di armi, dei powerup e dei settings di default. - Libreria
junitper i test - Plugin
mavenper la generazione di JAR, test, ... - SonarQube
Lo screenshot dell'ultimo report di Sonar si trova nella cartella sonar insieme ad
uno screenshot che mostra la coverage per package.
Abbiamo una coverage > 80% per il model e i controller che non interagiscono con la rete. Abbiamo inoltre dei test per alcune utils.
Nella cartella uml sono presenti l'uml iniziale (del model) e un flow diagram che avevamo sviluppato all'inizio
del progetto per mostrare i vari stati del gioco.
In uml/Final UML sono presenti gli UML finali generati con il tool di IntelliJ. E' presente un UML per ogni classe
con attributi e metodi, uno per le dipendenze tra le classi all'interno dei package e uno generico
per le dipendenze tra i package.
I Javadoc generati si trovano nella cartella javadoc.
Essendo JavaFX platform specific non è inclusa direttamente nei file jar ma abbiamo
messo a disposizione dei file zip per ogni piattaforma che possono essere trovati
nella cartella jars. Prima di eseguire i jar è necessario estrarre lo zip per
il proprio sistema operativo e (nel caso non sia già stato fatto automaticamente) spostare
i file estratti in una cartella chiamata javafx-sdk-11.0.2 dentro jars.
NOTA: In base al sistema operativo l'estrazione dello zip potrebbe già
generare una cartella javafx-sdk-11.0.2, in quel caso non è necessario
spostare alcun file ma è sufficiente avere la cartella javafx-sdk-11.0.2 all'interno di jars.
Esistono 3 jar che possono essere trovati nella cartella jars e 3 script sh
per il lancio che si trovano nella root del progetto:
- jar completo lanciabile tramite lo script
adrenaline.shche permette di far partire sia client che server - jar per il client lanciabile tramite lo script
adrenaline-client.sh - jar per il server lanciabile tramite lo script
adrenaline-server.sh
Il jar completo include tutti i file del progetto mentre quelli per server e client solo le classi e le resources necessarie.
Ci sono due modi per far partire i jar:
- Nel caso di utilizzo di Git Bash come terminale si possono utilizzare gli script
.sh - Per utilizzare il Prompt di Windows invece è necessario eseguire i commandi che si trovano
all'interno degli script
.shdirettamente che riportiamo qua sotto per semplicità.
java --module-path ./jars/javafx-sdk-11.0.2/lib --add-modules javafx.fxml --add-modules javafx.controls -jar ./jars/adrenaline.jar TIMEOUT=30 TURN_TIMEOUT=120 DEBUG=true
java --module-path ./jars/javafx-sdk-11.0.2/lib --add-modules javafx.fxml --add-modules javafx.controls -jar ./jars/adrenaline-client.jar TIMEOUT=30 TURN_TIMEOUT=120 DEBUG=true
java --module-path ./jars/javafx-sdk-11.0.2/lib --add-modules javafx.fxml --add-modules javafx.controls -jar ./jars/adrenaline-server.jar TIMEOUT=30 TURN_TIMEOUT=120 DEBUG=true
Come mostrato poco sopra è possibile passare 3 settaggi per il gioco da linea di comando:
DEBUG=true/falseindica se stampare sul terminale info aggiuntive su errori e messaggi di rete utili per il debug (defaulttrue).TIMEOUT=Xindica il tempo in secondi dopo il quale una partita parte in automatico dopo il raggiungimento di 3 o più giocatori (default30).TURN_TIMEOUT=Xindica il tempo in secondi che ogni giocatore ha per eseguire un azione prima che venga disconnesso (default120).
Il jar completo è generabile tramite la funzionalità Artifacts di IntelliJ IDEA.
Il jar viene generato nella cartella out/artifacts/ing_sw_2019_16_jar
e prima di poter essere utilizzato deve essere rinominato in adrenaline.jar e spostato in jars.
I jar separati per client e server invece sono generabili tramite maven con mvn clean package.
Vengono creati nella cartella target con i nomi client.jar-jar-with-dependencies.jar e server.jar-jar-with-dependencies.jar.
Devono essere spostati nella cartella jars e rinominati in adrenaline-client.jar e adrenaline-server.jar.