Skip to content
This repository has been archived by the owner on Sep 1, 2023. It is now read-only.

ArimondoScrivano/MyShelfie-ing-sw_2023-POLIMI

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Prova Finale Ingegneria del Software - AA 2022/23

alt text

Overview

Il programma è un'implementazione digitale del gioco da tavolo My Shelfie prodotto da Cranio Creations.

Il progetto è stato sviluppato per la prova finale del corso Ingegneria del Software 2022/2023, Politecnico di Milano.

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. E inoltre vietato l'utilizzo commerciale di suddetti contenuti.

Game plot

Il gioco consiste nel riempire la propria libreria con svariati oggetti, disponendoli in modo da ottenere il maggior numero di punti possibili.

La partita ha inizio posizionando le tessere oggetto sulla plancia soggiorno, in quantità variabile a seconda del numero di giocatori. Durante il proprio turno, i giocatori potranno scegliere se prendere 1, 2 o 3 tessere oggetto adiacenti tra loro e con almeno un lato libero dalla plancia, per poi posizionarle in un’unica colonna all’interno della loro libreria.

Gioca un ruolo fondamentale il modo in cui il giocatore sceglie di collocare le tessere all'interno della libreria, poichè consente di guadagnare punti tramite il conseguimento dell'obiettivo personale e degli obiettivi comuni. Le carte obiettivo richiedono infatti di soddisfare una specifica disposizione di tessere, basandosi sui diversi colori.

Il primo giocatore a completare la libreria guadagna un punto aggiuntivo ed innesca la fine della partita, al termine della quale avverrà il conteggio dei punti che proclamerà il vincitore.

Link al regolamento ufficiale

Regole complete del gioco

Struttura

Pattern architetturale: MVC (Model-View-Controller), sfruttato per separare la logica di presentazione dei dati dalla logica di business dell'applicazione.

Network: si basa sull'implementazione di entrambi i protocolli di rete RMI e socket (TCP-IP).

  • Server: unico, in grado di supportare più partite simultaneamente e multipli client (uno per ogni giocatore di ciascuna partita).
  • Client: ogni client sfrutta RMI o socket per connettersi al server di gioco. La scelta del tipo di protocollo da utilizzare è resa disponibile all'utente in fase di avvio del programma.

UI: sono implementate due possibili User Interface anch'esse selezionabili dall'utente in fase di avvio.

  • CLI: linea di comando
  • GUI: interfaccia utente grafica

Documentazione

UML

Diagrammi delle classi creati in fase di progettazione del programma: UML

JavaDoc

Documentazione Java che descrive classi e metodi utilizzati: JavaDoc

Testing

Resoconto sulla copertura degli unit test effettuati in fase di sviluppo del programma: test

Librerie e Plugins

Utilizzo
Maven build automation del progetto
JSON formato testuale per la strutturazione dati
JavaSwing package per lo sviluppo della GUI
JUnit5 framework per unit testing

Funzionalità implementate

  • Regole complete
  • Versione CLI
  • Versione GUI
  • RMI
  • Socket
  • Funzionalità avanzata:
    • Partite multiple: il server supporta più partite contemporaneamente.

Compilazione ed Esecuzione

I jar sono stati realizzati con l'ausilio di Maven Shade Plugin. Per compilare i jar autonomamente è necessario posizionarsi nella root del progetto e lanciare il comando

mvn clean package

Questo progetto richiede una versione di Java 19 o superiore per essere eseguito correttamente.

Client

Il client può essere eseguito utilzzando la modalità CLI e la modalità GUI

É necessario eseguire il client con un terminale che supporti UTF-8 e gli ANSI escape codes per una migliore esperienza nell'eventuale scelta della Cli.

Il comando per eseguire il client in modalità CLI/GUI è il seguente:

java -jar Client.jar

All'avvio verrà richiesto di inserire l'indirizzo IP del server di gioco.

Server

Il comando per eseguire il Server è il seguente:

java -jar Server.jar

Software utilizzati

Licenze

My Shelfie è una proprietà di Cranio Creations.

Team members