Skip to content

This repository contains a Java video game implementation of the board game Santorini. It has been developed for the course "Software Engineering" at Politecnico di Milano as part of the final examination projects for the Bachelor in Computer Engineering. For this project we have been awarded the maximum grade of 30 cum laude/30.

Notifications You must be signed in to change notification settings

matteobettini/Santorini-soft-eng-2020-Aspesi-Bettini-DeVita

Repository files navigation

Final project Software Engineering 2020

Santorini

drawing

This repository contains a Java video game implementation of the board game Santorini. It has been developed for the course "Software Engineering" at Politecnico di Milano as part of the final examination projects for the Bachelor in Computer Engineering. In a team of 3 students we implemented this multiplayer online game with 3D graphics. In the game it is possible to play multiple concurrent matches. Sockets are used for asynchronous communication. For this project we have been awarded the maximum grade of 30 cum laude/30.

Features

  • 2-3 Online players
  • GUI: Play in a 3D rendered world
  • Multiple parallel online games
  • Advanced gods: Apart from the full rules and the basic gods, we implement advanced gods
  • Normal or hardcore game-modes: In hardcore mode, illegal moves are allowed and make you loose the game. In normal mode, the allowed moves are displayed to the user which can only choose among them

Section of Professor Alessandro Margara

Group AM09

Functionality State
Basic rules ✔️
Complete rules ✔️
Socket ✔️
GUI ✔️
CLI ✔️
Multiple games ✔️
Advanced Gods ✔️

Setup

  • In the deliveries folder there are two multi-platform jar files, one to set the Server up and the other one to start the Client.

  • The Server can be run with the following command, as default it runs on port 4567:

    > java -jar SantoriniServer.jar

    This command can be followed by these arguments:

    • -port: followed by the desired port number between MIN_PORT and MAX_PORT as argument;
    • -v: to activate logging on the console;
    • -log: followed by a file name, to activate logging both in the console and in the chosen file;
    • -help: to get help.
  • The Client can be run with the following command:

    > java -jar SantoriniClient.jar
    • This command sets the Client on Graphical User Interface(GUI) mode, but it can be followed by -cli if the Command Line Interface(CLI) is preferred.
    • The Server's IP and port to connect to can be specified during the execution.

Build

Use maven to build jar files for both the Client and the Server by choosing the appropriate Maven Profile.

To build the Server, issue:
> mvn clean
> mvn package -P Server

To build the Client, issue:
> mvn clean
> mvn package -P Client

After these processes both jars can be found in the builds folder.

Extra

Two game-modes are implemented:

  • Normal: the Server sends the possible moves/builds to the Client so that they are displayed to the Player during his/her turn.
  • Hardcore: in this mode there are no suggestions and the Player can lose if he/she does not obey to Gods' rules.

Testing and Documentation

The model and card's packages have been entirely tested and documentation of the project has been written using JavaDocs:

Tools

License

This project is developed in collaboration with Politecnico di Milano and Cranio Creations.

About

This repository contains a Java video game implementation of the board game Santorini. It has been developed for the course "Software Engineering" at Politecnico di Milano as part of the final examination projects for the Bachelor in Computer Engineering. For this project we have been awarded the maximum grade of 30 cum laude/30.

Topics

Resources

Stars

Watchers

Forks

Contributors 4

  •  
  •  
  •  
  •