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
gson
per il parsing deli file JSON di armi, dei powerup e dei settings di default. - Libreria
junit
per i test - Plugin
maven
per 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.sh
che 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
.sh
direttamente 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/false
indica se stampare sul terminale info aggiuntive su errori e messaggi di rete utili per il debug (defaulttrue
).TIMEOUT=X
indica il tempo in secondi dopo il quale una partita parte in automatico dopo il raggiungimento di 3 o più giocatori (default30
).TURN_TIMEOUT=X
indica 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
.