Sviluppo di un programma distribuito per la simulazione del gioco da tavolo "MyShelfie" come descritto dalle regole. Il programma è sviluppato in linguaggio Java ed utilizza la libreria JavaFX per la componente grafica.
Una volta scaricata la cartella del progetto, è disponibile all'interno della cartella /deliverable/game
il jar per l'avvio del gioco.
Il gioco può essere avviato in 3 modalità differenti:
Per avviare le varie versioni sono necessari i seguenti comandi da terminale:
java -jar myShelfie.jar --server
;java -jar -Dfile.encoding=utf-8 myShelfie.jar --cli --server-addr [server-ip]
(il flag Dfile.encoding
è necessario per la compatibilità con determinati caratteri testuali);java -jar myShelfie.jar --gui --server-addr [server-ip]
;*(si noti che la CLI è pensata per funzionare in terminali Linux, nel caso di terminali basati su Windows non saranno disponibili i colori a causa di incompatibilità con i caratteri speciali ANSI).
Al fine di utilizzare la funzionalità di persitenza della partita è necessario
disporre di una cartella saved
nella stessa directory del jar.
Nel caso la cartella non fosse presente, verrà auto-generata dal server
nel momento della generazione di un salvataggio.
Il protocollo di comunicazione è basato su un sistema di callback simile ai meccanismi usati dal protocollo HTTP: ogni funzione è identificata da un metodo (es. "UPDATE") e da un contenuto, il quale dipende dalla tipologia di messaggi scelti dal server (es. PlainTextMessage, JsonMessage, etc.).
Oltre alle callback per i singoli metodi, è possibile definire anche dei middleware, sia a livello di singolo metodo, che a livello "globale". I middleware permettono di eseguire determinate operazioni prima dell'esecuzione di una callback specifica.
Durante la compilazione del progetto è probabile ricevere warning riguardanti un set di test disabilitati, ciò è una scelta consapevole ed è dovuta a dei conflitti con il workflow della continuous integration per cui la porta scelta per i test potrebbe risultare già bindata sul server. I test possono essere abilitati ed eseguiti localmente.
module-info.java
a causa di
conflitti con i package importati dalla libreria di JavaFX. Il file può essere riaggiunto non appena generato il javadoc. Development of a distributed program for simulating the board game "MyShelfie" as described by the rules. The program is developed in the Java language and uses the JavaFX library for the graphical component.
Once the project folder is downloaded, the game's executable jar file is available inside the /deliverable/game
folder.
The game can be launched in 3 different modes:
To start the different versions, the following terminal commands are required:
java -jar myShelfie.jar --server
;java -jar -Dfile.encoding=utf-8 myShelfie.jar --cli --server-addr [server-ip]
(the Dfile.encoding
flag is necessary for compatibility with certain textual characters);java -jar myShelfie.jar --gui --server-addr [server-ip]
;*(note that the CLI is designed to work on Linux terminals; in Windows-based terminals, colors won't be available due to incompatibility with ANSI special characters).
In order to use the game persistence feature, it is necessary to have a saved
folder in the same directory as the jar file.
If the folder is not present, it will be automatically generated by the server when creating a save file.
The communication protocol is based on a callback system similar to the mechanisms used by the HTTP protocol: each function is identified by a method (e.g., "UPDATE") and content, which depends on the server's chosen message types (e.g., PlainTextMessage, JsonMessage, etc.).
In addition to callbacks for individual methods, it is also possible to define middleware at both the method level and the "global" level. Middlewares allow executing certain operations before the execution of a specific callback.
During the project compilation, you may receive warnings regarding a set of disabled tests. This is a conscious choice and is due to conflicts with the continuous integration workflow where the chosen port for testing may already be bound on the server. The tests can be enabled and run locally.
module-info.java
file first due to conflicts with packages imported from the JavaFX library. The file can be added again once the Javadoc is generated.