Texture e modelli di copyright Roxley Games
Stefano Vanerio (890404)
Mark Federico Zampedroni (888340)
Marco Zanoni (888608)
Lo scopo progettuale è l'implementazione software del gioco da tavolo Santorini utilizzando come riferimento la versione fisica prodotta dalla Roxley games. Il pattern architetturale imposto è il Model-View-Controller.
I test utilizzano Junit 4.12.
Principalmente sono stati testati Model e Controller. Anche se non richiesto si è raggiunta una buona coverage per Server e messaggi.
Nella seguente tabella si riportano gli elementi con coverage più alta:
Element | Class, % | Method, % | Line, % |
---|---|---|---|
model | 100% (26/26) | 100% (154/154) | 98% (474/479) |
controller | 100% (9/9) | 92% (86/93) | 85% (355/413) |
server | 100% (3/3) | 91% (31/34) | 81% (172/209) |
utility | 91% (21/23) | 66% (52/78) | 62% (144/232) |
Sono state implementate tutte le funzionalità richieste
- Regole Complete
- CLI
- GUI
- Socket
e due funzionalità aggiuntive (FA)
- Persistenza
- Divinità Avanzate (Advanced Gods)
E' possibile creare i jar sia tramite Intellij sia tramite Maven package
, dopo aver utilizzato il comando Build Project
.
Nella cartella sono già presenti i jar finali ma, nel caso si volessero creare, è possibile farlo con la funzione Build artifacts
o con questo procedimento utilizzando maven da Intellij:
Nel caso si vogliano buildare entrambi i jar spostare il primo dopo averlo creato per evitare che venga sovrascritto.
- Per il Server: dal menu di maven selezionare il profilo
server
e deselezionare il profiloclient
. Inserire alla riga numero112
del file pom.xml la classeit.polimi.ingsw.ServerApp
tra le tag<mainClass>
. Quindi premereLifecycle -> package
. - Per il Client: dal menu di maven selezionare il profilo
client
e deselezionare il profiloserver
. Inserire alla riga numero112
del file pom.xml la classeit.polimi.ingsw.ClientApp
tra le tag<mainClass>
. Quindi premereLifecycle -> package
.
Dopo aver generato un jar si può trovare nella cartella target
L'indirizzo IP del server dipenderà dalla connessione dove si vuole giocare:
- Se tutti i client vengono eseguiti sulla macchina in locale sarà
127.0.0.1
. - Se in LAN si può trovare scrivendo sul terminale Linux
ifconfig
o sul terminale Windowsipconfig
. - Se invece si desidera giocare con macchine non collegate alla stessa LAN si può trovare su internet il proprio ip pubblico e come configurare il modem correttamente.
Per avviare il server bisogna digitare su console:
java -jar server.jar [-p port] [-log]
dove port
è la porta desiderata per il socket, se omesso il campo viene usata quella di default. Con log
verrà generato un file di logging nella stessa directory del jar.
Il client ha implementate due interfacce grafiche distinte. Con il parametro {cli|gui}
all'avvio è possibile scegliere se si vuole giocare su CLI o aprire la GUI. Se omesso viene caricata la GUI.
In modo da poter giocare al meglio con la CLI si necessita l'utilizzo di un terminale che supporti gli ANSI escape estesi (per i colori) impostato su una codifica UTF-8. In base alla risoluzione dello schermo si potrebbe aver bisogno di diminuire la dimensione del font (per esempio: con una risoluzione di 1920x1080 l'ideale è una font-size di 14).
Per avviare la CLI dal jar si deve scrivere su console ([arg] sono argomenti opzionali):
java -jar client.jar cli [-i ip] [-p port] [-log]
dove ip
e port
sono l'indirizzo ip e la porta del server, se omesso/i userà 127.0.0.1
e la porta di default. Con log
, come per il server, verrà generato un file di logging.
Per la GUI è necessario importare le dipendenze di javafx con i parametri [--module-path]
e [--add-module]
:
java --module-path "javafx-sdk-11.0.2/lib" --add-modules javafx.controls,javafx.fxml -jar client.jar gui [-i ip] [-p port] [-log]
dove ip
, port
e log
sono equivalenti ai parametri della cli. Nel caso non si abbia l'SDK di javaFx si può trovare il link per scaricarlo alla voce dipendenze.
Per utenti Linux: in caso non venga renderizzato correttamente il 3D includere l'opzione -Dprism.forceGPU=true
all'avvio (subito dopo java).
Inoltre controllare di avere i driver della scheda video aggiornati per scongiurare altri possibili problemi.
I jar sono stati compilati con SDK 13 (versione 13.0.2 di java), il programma per eseguire correttamente necessita di una versione pari o superiore a Java 11.
L'unica dipendendenza non presente nel JDK è javaFx. E' necessario scaricarlo separatamente, si può posizionare in una qualsiasi directory e correggere il path passato in --module-path
all'esecuzione della GUI .