Implementation of the board game My Shelfie. The project consists in the implementation of a single-server system capable of simultaneously managing multiple games made up of 2 to 4 clients (one for each player). Each player can choose to play using either the command line interface (later referred to as CLI) or the graphical user interface (later referred to as GUI). The project fully implements the MVC (Model-View-Controller) design pattern, further information about the realization of the network can be found here.
Below some of the more significant UML diagrams:
The following documentation includes a description of most of the classes and methods: Javadoc
The unit test present in the test directory provide a model line coverage of 92% and 39% overall line coverage
Libreria/Plugin | Descrizione |
---|---|
Maven | Build automation tool. |
JavaFx | Set of packages used to develop the GUI. |
JUnit | Testing framework. |
PlantUML | UML generation tool. |
Docker | Platform used to build and run linux containers. |
- Complete Rules
- CLI
- GUI
- Socket
- Docker
- 2 FA (Advanced Features):
- Chat: Client and server offer the provide the players with the ability to exchange messages to either all players or a single player.
- Multiple Games: The server must be able to simultaneously manage multiple games.
The precompiled jar can be used to run the client application.
To independently create a client application jar, execute the following command in the project root:
mvn clean install assembly:single
The compiled jar will be found in the target/
under the name my-shelfie-client-jar-with-dependencies.jar
.
To run the client's CLI for My Shelfie, open the terminal and run either java -jar my-shelfie-client.jar --cli
or java -jar my-shelfie-client.jar -c
.
To run the client's GUI for My Shelfie either run the following command java -jar my-shelfie-client.jar
or double click on my-shelfie-client.jar
.
The server application can be run with docker, the image can be found at the following DockerHub repository.
to run the server, open the terminal and pull the image from the repository using:
docker pull mrcatta/my-shelfie-server:latest
the start the container:
docker run -p 28888:28888 mrcatta/my-shelfie-server
Note that the container uses port 28888 and the client application is the to send messages to port 28888 (-p 28888:28888 maps your machine's 28888 port to the container's 28888 port)