Skip to content
/ Cluedo Public

Progetto di Ingegneria del Software del gruppo 22

License

Notifications You must be signed in to change notification settings

mikyll/Cluedo

Repository files navigation

CC_BY_--NC--_SA_4.0 License Size Contributors Issues Downloads Stars
Java IntelliJ IDEA

Cluedo

Applicazione per il gioco Cluedo, NON UFFICIALE e SENZA SCOPO DI LUCRO.

Nato come progetto del corso di Ingegneria del Software della triennale in Ingegneria Informatica presso l'unibo, ho deciso di portarlo a termine, sostituendo il prototipo con quello che sarà un gioco completo e funzionante.

In corso di sviluppo: quando avrò tempo lo porterò a termine.

Esecuzione

TO-DO

Roadmap

  • Scrivere le classi del game engine (prendere spunto anche da Tablut magari)
  • Poi adattarci la grafica
  • Sfruttare le classi del JavaFX multiplayer lobby system per il multigiocatore
  • Una volta ottenuto un prototipo giocabile, fare la grafica. NB: l'associazione delle caselle ai punti specifici nella mappa la fa il controller.
  • NB: modificarlo e scriverlo in INGLESE principalmente.
  • Classi base del model
  • Trovare qualcuno che mi disegni la mappa
  • Sistema per il multigiocatore molto base (server host, client si connettono al server, con socket UDP/TCP. Sistema di room con creazione/unione)
  • Per le socket usare un thread aggiuntivo: quando l'utente seleziona "crea una stanza" viene creato un oggetto Server che, dopo il set dei parametri si mette in listen delle connessioni. Quando l'utente seleziona "unisciti ad una stanza" viene creato un oggetto Client che si connette al server. Serve thread separato altrimenti le chiamate bloccanti interferiscono con la GUI (sempre che funzionino, perché javafx si arrabbia spesso) - pattern observer(?)
  • Scrivere documentazione su tutto. Fondamentalmente su come funzionano client e server, quali thread eseguono, quali sono i workflow e quali sono le sequenze di scambio di messaggi. Utilizzare anche dei diagrammi UML.
  • ATTENZIONE: aggiungere chiusura di tutto quando si chiude l'app (potrebbero esserci dei thread attivi)
  • Persistenza impostazioni varie con parsing XML

Niente gestore sicurezza che tanto non serve a una mazza.

Multiplayer execution flow:

  1. Un utente1 inserisce il nickname e seleziona "crea una lobby";
  2. viene creato il Server:
  • il server crea un thread che crea una socket, la binda all'address locale, porta 9001 e si mette in ascolto (il thread viene creato perché ascoltare sulla socket è un'operazione bloccante;
  1. un utente2 inserisce il nickname, l'IP del server a cui si vuole connettere, e prova ad unirsi ad una stanza.
  2. dunque viene creato il Client:
  • il client crea un thread che crea la socket, si connette al server, e gli invia un messaggio CONNECT;
  • il server risponde dicendo se è possibile la connessione (CONNECT_OK, in caso affermativo, CONNECT_FAILED, in caso negativo);
  • una volta ricevuto l'OK, il client riceve un secondo messaggio, contenente la lista degli utenti connessi (così può aggiornare l'interfaccia grafica);
  • dopodiché si mette in ascolto per i messaggi futuri.

Built With

versione Java: JavaSE-11 (jdk-11.0.11)
versione JavaFX: JavaFX 11 (javafx-sdk-11.0.2)

References

  • Progetto utilissimo per implementare la chat della lobby: JavaFX-Chat
  • Tutorial Gioco JavaFX: Space Shooter
  • Simple API with high-level abstraction, to build a game without troubles: Java FXGL

LinkedIn GitHub followers