{"id":21539889,"url":"https://github.com/raruto/ilmagnifico","last_synced_at":"2025-03-17T21:44:26.719Z","repository":{"id":98199468,"uuid":"90786388","full_name":"Raruto/IlMagnifico","owner":"Raruto","description":"Porting Java del gioco da tavolo \"Lorenzo il Magnifico\" (progetto sviluppato durante il corso di \"Ingegneria del Software\" presso il Politecnico di Milano - a.a. 2016-2017)","archived":false,"fork":false,"pushed_at":"2018-11-23T23:50:42.000Z","size":66276,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-01-24T08:11:37.331Z","etag":null,"topics":["client-server","command-line","eclipse","gioco-da-tavolo","gui","il-magnifico","ingegneria-del-software","ingegneria-del-software-2017","java","junit","lorenzo-il-magnifico","magnifico","polimi","politecnico-di-milano","progetto-ingegneria-del-software","rmi","socket","staruml","uml"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Raruto.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-05-09T19:56:33.000Z","updated_at":"2018-11-23T23:50:43.000Z","dependencies_parsed_at":null,"dependency_job_id":"14a5f5bd-3c38-4cf9-870b-138da6cd6980","html_url":"https://github.com/Raruto/IlMagnifico","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Raruto%2FIlMagnifico","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Raruto%2FIlMagnifico/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Raruto%2FIlMagnifico/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Raruto%2FIlMagnifico/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Raruto","download_url":"https://codeload.github.com/Raruto/IlMagnifico/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244117042,"owners_count":20400735,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["client-server","command-line","eclipse","gioco-da-tavolo","gui","il-magnifico","ingegneria-del-software","ingegneria-del-software-2017","java","junit","lorenzo-il-magnifico","magnifico","polimi","politecnico-di-milano","progetto-ingegneria-del-software","rmi","socket","staruml","uml"],"created_at":"2024-11-24T04:16:39.659Z","updated_at":"2025-03-17T21:44:26.711Z","avatar_url":"https://github.com/Raruto.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# IlMagnifico\n\n### Manuale Utente:\n1) [**Requisiti minimi dell’utente**](#10-requisiti-minimi-dellutente)\n\n2) [**Utilizzo del gioco da Linea di Comando (CLI)**](#20-utilizzo-del-gioco-da-linea-di-comando-cli)\n   1) [**Connessione**](#21-connessione)\n   2) [**Turno del giocatore**](#22-turno-del-giocatore)\n   3) [**Mercato**](#23-mercato)\n   4) [**Raccolto**](#24-raccolto)\n   5) [**Produzione**](#25-produzione)\n   6) [**Palazzo del Consiglio**](#26-palazzo-del-consiglio)\n   7) [**Torre**](#27-torre)\n   8) [**Famigliare**](#28-famigliare)\n   9) [**Sostegno dell Chiesa**](#29-sostegno-della-chiesa)\n   10) [**Chat**](#210-chat)\n   11) [**Board**](#211-board)\n   12) [**Dash**](#212-dash)\n   13) [**Cards**](#213-cards) \u003ca href=\"http://www.craniocreations.it/prodotto/lorenzo-il-magnifico/\"\u003e\u003cimg src=\"https://raruto.github.io/IlMagnifico/wiki-assets/ScatolaDelGioco.jpg\" width=\"400\" alt=\"Scatola del Gioco\" align=\"right\" /\u003e\u003c/a\u003e\n\n3) [**Utilizzo del gioco da Interfaccia Grafica (GUI)**](#30-utilizzo-del-gioco-da-interfaccia-grafica-gui)\n   1) [**Connessione**](#31-connessione)\n   2) [**Tabellone**](#32-tabellone)\n   3) [**Plancia**](#33-plancia)\n   4) [**Avversari**](#34-avversari)   \n\n4) [**Le Scomuniche**](#40-le-scomuniche)\n\n5) [**Fine Del Gioco**](#50-fine-del-gioco)\n\n### 1.0 Requisiti minimi dell’utente\n\nSi presuppone che l’utente conosca completamente le [regole](https://raruto.github.io/IlMagnifico/IlMagnifico/res/rules/regole_del_gioco.pdf) del gioco da tavolo [“Lorenzo Il\nMagnifico”](http://www.craniocreations.it/prodotto/lorenzo-il-magnifico/), prodotto dalla [Cranio Creations](http://www.craniocreations.it/)\n\n\n### 2.0 Utilizzo del gioco da Linea di Comando (CLI)\n\n### 2.1 Connessione\n\nPer una corretta configurazione della connessione è richiesto l’avvio precedente della\ncorrispettiva applicazione Server.\nAll’avvio del programma Client (CLI) viene chiesto quale connessione utilizzare: se\nl’utente vuole utilizzare la connessione realizzata con RMI digita `“rmi”` e preme invio, se\nvuole utilizzare la connessione realizzata tramite socket digita `“socket”` e preme invio.\nTali stringhe non sono suscettibili alle maiuscole.\n\n### 2.2 Turno del giocatore\n\nTerminate le operazioni di connessione, viene notificato agli utenti se la partita è stata\ncreata tramite opportuno messaggio. Da questo momento ogni fase di gioco e azione\ndei giocatori sono notificate da messaggi preceduti da una stringa racchiusa tra\nparentesi quadre. Tale stringa indica l’utente che ha eseguito l’azione o è uguale a\n`“GAME”` se si tratta di una fase di gioco.\nAd ogni giocatore viene notificato di chi è il turno e le azioni disponibili.\nTali azioni sono indicate tra parentesi in minuscolo e, ad eccezione della azione `“chat”`,\nvengono eseguite solo dal giocatore di turno. Se un giocatore non di turno cerca di\neseguire una di queste azioni, gli viene notificato un messaggio di errore. Allo stesso\nmodo, se il giocatore di turno cerca di effettuare una azione che secondo le regole non è\nattuabile, viene notificato un messaggio di errore che ne indica la causa del tale.\n\nPer selezionare una delle azioni disponibili, il giocatore di turno scrive il nome\ndell’azione e preme invio. Si sottolinea che se l’azione non è riconosciuta, verrà chiesto\nancora all’utente di inserire una scelta tra le azioni disponibili. A dipendere dalla azione,\nvengono stampate le informazioni dello stato del gioco utili per l’azione stessa e le\nopzioni ulteriori che l’utente può scegliere.\n\n## Le Azioni `“action”`\n\n### 2.3 Mercato\n\nNel caso venga selezionato `“Market”` vengono stampate le zone del mercato: esse\nvarranno null se attualmente nessun famigliare è presente nella zona, altrimenti verrà\nsegnalato quale famigliare è presente e a quale giocatore appartiene. Viene poi chiesto\nal giocatore quale zona si vuole occupare e con quale famigliare.\n\n### 2.4 Raccolto\n\nNel caso venga selezionata l’azione `“Harvest”` vengono stampate le due zone del\nraccolto: la prima zona, quella rotonda, conterrà null se non vi è presente nessun\nfamigliare, la seconda zona, quella ovale, non conterrà niente se non è presente nessun\nfamigliare. Come nella zona del mercato, se è presente un famigliare, viene notificato\nnella stampa.\nA seguire viene chiesto all’utente quale delle due zone vuole occupare, con quale\nfamigliare e, se presenti, se vuole attivare i singoli effetti permanenti delle carte\nTerritorio in proprio possesso.\n\n### 2.5 Produzione\n\nIl funzionamento dell’azione `“Production”` è esattamente uguale a quello dell’azione\nRaccolto, con l’unica differenza che viene chiesto se si vuole attivare i singoli effetti\npermanenti delle carte edificio anziché delle carte territorio.\n\n### 2.6 Palazzo Del Consiglio\n\nNel caso venga selezionata l’azione `“CouncilPalace”` verranno stampati i famigliari\nattualmente nella zona e verrà chiesto quale dei propri famigliari si vuole posizionare\nnella zona. Verrà poi chiesta quale effetto del privilegio del consiglio eseguire.\n\n### 2.7 Torre\n\nSe viene selezionata l’azione `“Tower”`, vengono stampate le torri e le carte posizionate\nsu esse. Nel caso sia presente un famigliare in un piano della torre, verranno stampate le\ninformazioni su quest’ultimo.\nSuccessivamente, viene chiesto al giocatore su quale torre vuole posizionare il proprio\nfamigliare. Data la scelta, vengono stampate le carte sulla torre in questione ed i relativi\ncosti e viene chiesto all’utente quale dei piani della torre si vuole occupare.\nProseguendo dopo la scelta, se la carta possiede costi alternativi, viene chiesto\nall’utente quale pagare, altrimenti avviene il pagamento in automatico.\n\n### 2.8 Famigliare\n\nSe viene selezionata l’azione `“Familiar”`, viene chiesto all’utente a quale famigliare vuole\naumentare il valore pagando servitori e successivamente quanti servitori vuole pagare.\nDa notare che tale azione, a differenza delle azioni standard, non prevede il passaggio\ndel turno al compimento della stessa.\n\n### 2.9 Sostegno Della Chiesa\n\nTale azione diventa disponibile solamente alla fine di ogni periodo. Quando selezionata,\nse la fase di gioco è effettivamente il Rapporto col Vaticano, viene chiesto all’utente se\nvuole sostenere la Chiesa oppure no. A seconda della risposta e delle disponibilità dei\npunti fede del giocatore, vengono eseguite le istruzioni corrispondenti.\n\n## Il comando `“chat”`\n\n### 2.10 Chat\n\nL’azione chat si differenzia dalle altre azioni in quanto può essere utilizzata dagli utenti\nin qualunque momento. Come suggerisce il nome, permette ai giocatori di inviare un\nmessaggio comune.\n\n## Il comando `“board”`\n\n### 2.11 Board\n\nSe selezionata l’azione `“board”`, vengono stampate le informazioni relative al tabellone\ndi gioco secondo le convenzioni descritte per le azioni `“action”`.\n\n## Il comando `“dash”`\n\n### 2.12 Dash\n\nSe selezionata l’azione `“dash”`, vengono stampate le informazioni relative alla propria\nplancia giocatore. Viene chiesto anche se si vuole stampare le informazioni relative alle\nplance degli altri giocatori.\n\n## Il comando `“cards”`\n\n### 2.13 Cards\n\nSe selezionata l’azione `“cards”`, vengono stampate le informazioni relative a tutte le\ncarte presenti nel gioco.\n\n### 3.0 Utilizzo del gioco da Interfaccia Grafica (GUI)\n\n### 3.1 Connessione\n\nPer una corretta configurazione della connessione è richiesto l’avvio precedente della\ncorrispettiva applicazione Server.\nAll’avvio del programma Client (GUI) viene chiesto quale connessione utilizzare: `“rmi”`,\noppure `“socket”`, ed il nome utente da utilizzare per il giocatore.\n\nUna volta portata a termine la\nconnessione, il programma rimarrà in\nattesa della notifica da parte del\nServer dell’aggiunta di altri giocatori e\nconseguente inizio della partita\n\n\u003csub\u003e**UsernameFrame**, schermata usata per il login e attesa inizio partita\u003c/sub\u003e\n![UsernameFrame](https://raruto.github.io/IlMagnifico/wiki-assets/UsernameFrame.jpg)\n\n### 3.2 Tabellone\n\nIl tabellone è il componente principale della partita dove sono presenti la maggior parte\ndelle azioni di gioco che un giocatore può svolgere posizionando un famigliare\nall’interno della partita. Per posizionare un famigliare è necessario prima selezionarlo\nnella plancia con un click ed in seguito selezionare la zona dove spostarlo, sempre con\nun click. Inoltre è possibile prendere visione delle carte sviluppo, associate alle torri, e\ndelle eventuali scomuniche, associate ai giocatori.\n\n\u003csub\u003e**GUI**, schermata di esempio di una configurazione del tabellone nel corso di una partita\u003c/sub\u003e\n![GUI](https://raruto.github.io/IlMagnifico/wiki-assets/GUI.jpg)\n\n### 3.3 Plancia\n\nLa plancia è il componente che contiene le informazioni relative alle carte e alla riserva\ndel giocatore.\nIn quest’area un giocatore può\neseguire un’azione `“famigliare”`\nincrementando di uno il valore\ndi una pedina (eseguendo 1\nclick su servitore e\nsuccessivamente 1 click sulla\npedina desiderata).\n\n\u003csub\u003e**Plancia**, esempio di una configurazione della plancia giocatore\u003c/sub\u003e\n![Plancia](https://raruto.github.io/IlMagnifico/wiki-assets/Plancia.jpg)\n\n### 3.4 Avversari\n\nComponente del gioco che non fa altro che esporre le plance degli avversari (riserva,\ncarte sviluppo). Non e possibile prendere visione dei famigliari non ancora posizionati.\n\n\u003csub\u003e**PlanciaAvversario**, esempio di una configurazione della plancia di un giocatore avversario\u003c/sub\u003e\n![PlanciaAvversario](https://raruto.github.io/IlMagnifico/wiki-assets/PlanciaAvversario.jpg)\n\n### 4.0 Le Scomuniche\n\nAl giocatore viene notificata la scomunica solamente quando essa viene applicata la prima\nvolta dopo un rapporto del Vaticano. Nella modalità linea di comando, è possibile\nconsultare le scomuniche della partita all’interno del comando `“dash”` (scomuniche\nassociate ai giocatori) o `“board”` (scomuniche in uso); il programma attua\nautomaticamente tutti i malus derivanti dalle tessere scomunica.\n\n### 5.0 Fine Del Gioco\n\nAlla fine della partita, il programma calcola la classifica finale basata sui punti vittoria in\npossesso dei giocatori, calcolando tutti i bonus derivanti da carte e i malus derivanti dalle\ntessere scomunica, nonché i punti vittoria ricevuti in base alle risorse in proprio possesso.\nTale classifica viene poi inviata a tutti i giocatori.\n\n---\n\n**Risorse utili:** [**Manuale utente.pdf**](https://raruto.github.io/IlMagnifico/IlMagnifico/res/docs/manuale_utente.pdf) **-** [**Regole del gioco:**](https://raruto.github.io/IlMagnifico/IlMagnifico/res/rules/regole_del_gioco.pdf) [**[EN]**](https://raruto.github.io/IlMagnifico/IlMagnifico/res/rules/regole_del_gioco_in_Inglese.pdf) **-** [**Documento di progetto.pdf**](https://raruto.github.io/IlMagnifico/IlMagnifico/res/docs/documento_di_progetto.pdf) **-** [**UML.mdj**](https://raruto.github.io/IlMagnifico/IlMagnifico/res/uml/LorenzoIlMagnifico.mdj)\n\n---\n\n**Contributori:** [**CharlieChaplin1947**](https://github.com/CharlieChaplin1947), [**Raruto**](https://github.com/Raruto)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fraruto%2Filmagnifico","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fraruto%2Filmagnifico","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fraruto%2Filmagnifico/lists"}