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.
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.
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
Diagrammi delle classi creati in fase di progettazione del programma: UML
Documentazione Java che descrive classi e metodi utilizzati: JavaDoc
Resoconto sulla copertura degli unit test effettuati in fase di sviluppo del programma: test
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 |
- Regole complete
- Versione CLI
- Versione GUI
- RMI
- Socket
- Funzionalità avanzata:
- Partite multiple: il server supporta più partite contemporaneamente.
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.
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.
Il comando per eseguire il Server è il seguente:
java -jar Server.jar
-
Draw.io - Diagrams.net: UML diagrams.
-
IntelliJ: IDE di sviluppo principale.
My Shelfie è una proprietà di Cranio Creations.