Skip to content

Gruppo GC55 - Progetto Ing. del Software 2019/2020 - Politecnico di Milano

Notifications You must be signed in to change notification settings

Mark-Zampedroni/ing-sw-2020-Vanerio-Zampedroni-Zanoni

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Progetto ing. software anno accademico 2019/2020

Gruppo GC55

alt text

Texture e modelli di copyright Roxley Games

Componenti del gruppo

Stefano Vanerio (890404)

Mark Federico Zampedroni (888340)

Marco Zanoni (888608)

Scopo

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.

Test e coverage

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)

Funzionalità

Sono state implementate tutte le funzionalità richieste

  • Regole Complete
  • CLI
  • GUI
  • Socket

e due funzionalità aggiuntive (FA)

  • Persistenza
  • Divinità Avanzate (Advanced Gods)

JAR

Creazione dei JAR

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 profilo client. Inserire alla riga numero 112 del file pom.xml la classe it.polimi.ingsw.ServerApp tra le tag <mainClass>. Quindi premere Lifecycle -> package.
  • Per il Client: dal menu di maven selezionare il profilo client e deselezionare il profilo server. Inserire alla riga numero 112 del file pom.xml la classe it.polimi.ingsw.ClientApp tra le tag <mainClass>. Quindi premere Lifecycle -> package.

Dopo aver generato un jar si può trovare nella cartella target

Server

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 Windows ipconfig.
  • 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.

Client

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.

CLI

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.

GUI

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.

Dipendenze

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 .

About

Gruppo GC55 - Progetto Ing. del Software 2019/2020 - Politecnico di Milano

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors 4

  •  
  •  
  •  
  •