Giter VIP home page Giter VIP logo

my_shelfie-distributed-online-game's Introduction

ing-sw-2023-ettori-giammusso-faccincani-gumus

Software Engineering Project (PoliMi, 2023) - My Shelfie

Authors

Politecnico di Milano - Prof. Pierluigi San Pietro - Software Engineering

  • Davide Ettori
  • Samuele Giammusso
  • Samuele Faccincani
  • Furkan Gumus

Final Grade: 30 Cum Laude / 30

Project Specifications

  • You can find the project specifications here.
  • You can find the rulebook of the game here.

How to Play

  1. Download the App.jar file from deliverables/final/jar/App.jar
  2. Place it inside a folder of your choice
  3. Run the following command: java -jar App.jar from a terminal starting at that folder. (you won't be able to double-click to run the app)

The Application will automatically create some helper files inside the folder where the App.jar file is. Don't rename, modify or delete them

If the java command does not work, you might need to install java locally from the oracle website

The first window always asks you to enter the IP address to use for connection and the ports for both Socket and RMI (the ports must be different). We suggest using the default ports, without modifying what's already written. The Ip address should be the one of the server for all the players and can be found by the ipconfig command on the terminal of the server machine. Then if you are the first player to connect to this IP and ports you will be assumed to be the server, so the app will ask the number of players and if you want to activate persistence.
If you are not the first one to connect you will be assumed to be a player, so the app will ask the UI mode, the network mode and if you want to activate resilience.
You can run multiple games on the same machine and IP if you change the ports for the networks (both Socket and RMI).
NOTE: if you activate persistence on the server the app won't accept the activation of resilience from the clients (it wouldn't make sense).
TIP: the enter key on your keyboard always triggers the button for making moves, sending chats and confirming IP.
Finally, if you use a NON-UNIX terminal the TUI interface won't show the colors.

  • Here is a video that explains how to play this Board Game: Tutorial

Remember that in order to play correctly you must connect all the clients and the server to the same network: this means that if you are not playing on local host, you have to connect to the IP address of the network seen from the Computer hosting the Server.
The best UI experience for the TUI is granted on Unix terminals
The best UI experience for the GUI is granted on screens of 16 inches or more

Project Functionalities

In this table you can see which functionalities we implemented

Functionalities Base Advanced
Simplified Rules
Complete Rules
Socket
RMI
TUI
GUI
Multiple Games
Server Persistence
Client Resilience
Chat

In this table you can see how the project is evaluated

Requirements Grade
Simplified Rules + TUI + (Socket o RMI) 18
Complete Rules + TUI + (Socket o RMI) 20
Complete Rules + TUI + (Socket o RMI) + 1 AF 22
Complete Rules + TUI + GUI + (Socket o RMI) + 1 AF 24
Complete Rules + TUI + GUI + Socket + RMI + 1 AF 27
Complete Rules + TUI + GUI + Socket + RMI + 2 AF 30
Complete Rules + TUI + GUI + Socket + RMI + 3 AF 30L

Documentation

For this project we documented:

1. JavaDoc

  • Here you can find the JavaDoc documentation

2. UML

  • Class Diagram made with Draw.io, it represents the main classes, methods and attributes of the project
  • Full Class Diagram the complete Class Diagram of the project, generated with IntelliJ
  • Sequence Diagram that represent how the messages are exchanged between the Client and the Server

3. Test Report

  • Here you will see our test report.

4. Jar File

  • Here you can find a helpful Guide on how to create the Jar file

Development

The software has been written using Java 19.

The IDE used for the development was IntelliJ Idea Ultimate.

To create the UML diagrams we chose the app Draw.io.

The dependency management was administrated with Maven

The version control was operated with Git and GitHub

License

All rights to My Shelfie game are owned by Cranio Games, which provided the graphical resources to be used for educational purposes only.

NOTA: My Shelfie è un gioco da tavolo sviluppato ed edito da Cranio Creations Srl. I contenuti grafici di questo progetto riconducibili al prodotto editoriale da tavolo sono utilizzati previa approvazione di Cranio Creations Srl a solo scopo didattico. È vietata la distribuzione, la copia o la riproduzione dei contenuti e immagini in qualsiasi forma al di fuori del progetto, così come la redistribuzione e la pubblicazione dei contenuti e immagini a fini diversi da quello sopracitato. È inoltre vietato l'utilizzo commerciale di suddetti contenuti.

my_shelfie-distributed-online-game's People

Contributors

davide-ettori avatar giammu avatar gioforno avatar gfurkan00 avatar

Stargazers

Yana Siao avatar  avatar  avatar  avatar Silvia Marino avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.