Skip to content

Final Project - Software Engineering 1 - Politecnico di Milano, A.A. 2020-2021 - Maestri del Rinascimento: Lorenzo il Magnifico

License

Notifications You must be signed in to change notification settings

ChristianRomeo/ing-sw-2021-Staiano-Tissot-Romeo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Masters of Renaissance Board Game

Last Commit Intellijidea JavaFx Build Parsing Sonarqube UML Release Tests

DISCLAIMER: PLEASE READ THE WHOLE LICENSE BEFORE ANY USE.

Masters of Renaissance JAVA edition is the final test of Software Engineering course of "Computer Science Engineering" held at Politecnico di Milano (2020/2021).

Teacher Gianpaolo Cugola.

The Students Team

Implemented features

Functionality State
Complete Rules ✔️
CLI ✔️
GUI ✔️
Socket ✔️
Multiple Games ✔️
Reconnection

The Game

Masters of Renaissance Board Game, by CranioCreations.
Here the full specifications:
IT
ENG

The project consists in the implementation of a distributed system made of a single server capable of managing multiple games and multiple clients (one per player) using the MVC pattern (Model-View-Controller). The network is managed through the use of sockets.
This project includes:

  • Initial UML diagram;
  • Final UML diagram, generated from the code by automated tools;
  • Javadocs;
  • Working game implementation, rules compliant;
  • Source code of the implementation;
  • Source code of unity tests.

Setup

Requirements

  • Java SE SDK 15 (or newer) [for running]
  • Maven framework 3.8 (or newer) [for building]

In the deliverables folder there is a multi-platform jar file, that can be used both for Server and Clients.

  • The Server can be runned with the following command, as defaults it runs on port 9876:
    > java -jar GC24.jar server [ip.json]
  • The clients can be runned with the following command:

    • CLI
      > java -jar GC24.jar cli [ip.json]
    CLI
    • GUI
      > java -jar GC24.jar [gui] [ip.json]

GUI

GUI1

This commands can be followed by:

  • ip.json that is the configuration file, where it can be choosen the server port and server ip for clients
{
"server_ip": "device ip where the server is launched (127.0.0.1 default)",
"server_port": "(9876 default)"
}
  • In alternative you can use the .bat files to lauch the game, be sure to have Windows Terminal installed.

Warning

For the best CLI experience, it's recommended to use native linux terminal or WSL (windows-subsystem for linux) in order to provide fonts, colors and emoji as the project was meant to show.
DejaVu Sans Mono for Powerline was the font originally used at size 12.

For the best GUI experience, it's reccomended a minimum resolution of 2560 x 1440 (or 2160 x 1440).
at 1920 x 1080 the window will result almost fullscreen.

In order to play, you'll have to launch at least one server and one client (either CLI or GUI).
In order to play multiplayer from different locations port forwarding is needed.

Build

The project was built with Maven, using shade-plugin.

To run and compile the software:

Clone this repo
In the cloned repo folder, issue:
> mvn clean
> mvn package
After these processes the compiled jar can be found in the shade folder.

UML

The following class diagrams represent respectively the initial model developed during the design phase and the final product diagrams.

Javadocs

The following documentation includes a description for most of the classes and methods used and follows the Java documentation technique.
It can be consulted here.

Test Coverage

Coverage criteria: Methods.
Tool used: Junit.

Codecov Codecov

The unit tests run automatically at each commit thanks to the Continuous Integration pipeline.

model_coverage

controller_coverage

Cranio-Creations