/MastersOfRenaissance

🕹 Software Engineering 1 Project - BSc Thesis

Primary LanguageJavaMIT LicenseMIT

Software Engineering Project 2020-2021

latest commit license

Maestri del Rinascimento is the final test of "Software Engineering" course of "Computer Science Engineering" held at Politecnico di Milano (2020/2021). It has been evaluated "30/30L".

Teacher: Pierluigi San Pietro

Group: SP10

Students:

Table of Contents

  1. Project specification
  2. Implemented Features
  3. Usage
  4. Communication Protocol
  5. Game GIFs
  6. Game Screenshots
  7. Software Used
  8. License

Project specification

The project consists of a Java version of the board game Maestri del Rinascimento, made by Cranio Creations.

You can find the full game here and the rules here.

The final version includes:

  • initial UML diagram;
  • final UML diagram, generated from the code by automated tools;
  • working game implementation, which has to be rules compliant;
  • source code of the implementation;
  • source code of unit tests.

Implemented Features

Functionality Status
Basic rules 🟢
Complete rules 🟢
Socket 🟢
GUI 🟢
CLI 🟢
Multiple games 🟢
Persistence 🟢
Disconnection resilience 🟢

Legend

🔴 Not Implemented     ðŸŸ¡ Implementing    ðŸŸ¢ Implemented

Usage

Windows/Linux/MacOS

  1. Open the command line
  2. Clone the repository
  3. In the repository's directory, run:
java -jar Maestri.jar [mode] [port] [ip] [nickname]

Modes:

Shortcut Name Description
-c -cli Starts the CLI and connects to server with port
-g -gui Starts the GUI and connects to server with port
-s --server Starts server with port

Mode argument can be run without further arguments(TCP port & nickname). In such case or in case of mssing arguments these will be asked later.

Game GIFs

Note that the following GIFs related to the GUI show the state of the game when it was delivered for evaluation. Due to copyright reasons, the assets, which were provided without permission of making them freely available, have been later substituted with ones made by ourselves.

GUI

Game Turn Real time updates

CLI


Game Screenshots

CLI



name-of-you-image


name-of-you-image


name-of-you-image


name-of-you-image


GUI

Note that the following screenshots related to the GUI show the state of the game when it was delivered for evaluation. Due to copyright reasons the assets, which were provided without permission of making them freely available, have been later substituted with ones made by ourselves.



name-of-you-image


name-of-you-image




  • We implemented a 3D gui based on a simplified model of the server's state machine. The user can freely see their board, using W and S to cycle between Board view, Market view, and Frontal view, which covers every game component. While looking from the Frontal view, the player can use D and S keys to rotate around the table, with 90 degree steps. Both the CLI and GUI implement real time updates on the game state. Common elements, such as CardShop and ResourceMarket are shared between all players, each players sees them in front of their board but they are actually synchronized
  • The CLI we made can contain vertical, horizontal lists of elements and custom drawn elements. Each list can contain other lists or elements. The user can select an option from each list or sublist and our input handler checks if the input is correct or asks to retype if it is not. A simplified standalone version of the CLI can be found here.

Testing

  • All unit test have been automated when possible. For some network functionalities it has been necessary to perform some manual QA instead of a mock test , for which it would have required too many stubs (being a stateful protocol) so we choose manual Quality Assurance.

  • All the model classes have been extensively covered, along with most of the controller's classes when possible. Some functionalities regarding production output conversion and leader activation do not have an automated test, but our manual tests led us to assert that the functionalities implemented are stable in all cases.

  • Clicking repeatedly during the drag and drop action may cause issues.

  • All the unit test have been run before each commit

Software Used

sequencediagram.org - sequence diagrams

Draw.io - UML diagrams

Intellij IDEA Ultimate - main IDE

Copyright and License

Maestri del Rinascimento is copyrighted 2020.

Licensed under the MIT License. You may not use this software except in compliance with the License.