Tabellone:
Si implementa un gioco su tabellone: ogni giocatore ha dei possedimenti, del denaro, una pedina su una
determinata casella del tabellone.
Il sistema gestisce l'avvicendarsi dei turni dei diversi giocatori e l'avanzamento delle loro pedine secondo il
risultato del lancio dei dadi; se entrambi i dadi hanno lo stesso numero, il giocatore ha diritto a un secondo
turno.
Il tabellone è formato da caselle unite in modo circolare.
Le caselle possono essere di diverso tipo:
• Ci sono caselle che possono essere acquistate (società , stazioni e terreni)
• Ci sono caselle sulle quali il giocatore può anche costruire (solo terreni)
• Ci sono delle caselle che non sono nè acquistabili nè possedibili (esempio prigione, imprevisti o
probabilità)
Quando un giocatore capita su un terreno:
• se la casella è possedibile ed è ancora proprietà della banca, il giocatore può scegliere se acquistare il
terreno (che ha un prezzo); altrimenti il terreno rimane alla banca e il giocatore non paga nulla.
• se la casella è possedibile ed è proprietà di un altro giocatore, chi vi capita deve pagare un affitto
(proprietà di ogni singolo terreno) al proprietario. L'affitto è doppio se il proprietario possiede tutti i
terreni dello stesso colore (o tutte le società dello stesso tipo o, ancora, tutte le stazioni).
• Se un giocatore capita sopra ad un terreno di sua proprietà, il terreno è edificabile e possiede tutti i
terreni di quel colore allora può costruirvi case o alberghi. Le prime hanno un costo di 50 euro, i
secondi hanno un costo di 100 euro.
• Se un giocatore passa sopra ad un terreno sul quale sono stati costruiti case o alberghi paga al
proprietario del terreno un'indennità pari a quella dovuta per il terreno più 10 euro per ogni casa
presente e 30 euro per ogni albergo presente.
Extra per il tabellone:
Prigione
• Quando un giocatore capita sulla casella prigione non accade nulla
• Quando un giocatore capita sulla casella “vai in prigione!” allora viene spostato alla casella prigione e
vi rimane per due turni
Imprevisti e probabilità:
• Quando un giocatore capita su una casella imprevisti o su una casella probabilità deve pescare una
carta, rispettivamente, di imprevisti o di probabilità.
• Si scelgano 4 imprevisti e 4 probabilità da implementare da quelli del monopoli (o potete anche
inventarveli)
• È richiesto di implementare tra le probabilità la carta esci gratis di prigione che, quando il giocatore
che la possiede va in prigione, gli permette di uscire subito di prigione.
Svolgimento del gioco:
Giocatori:
• I giocatori usano tutti la stessa macchina e la stessa interfaccia utente a turni.
• Vengono tutti creati all'inizio del gioco
• Hanno una somma di danaro come budget iniziale e partono tutti dalla casella via.
• Possono abbandonare il gioco in qualsiasi momento, in tal caso tutti i loro possedimenti passano alla
banca.
• Il gioco decide quando arriva il turno di un giocatore
• Quando è il suo turno il giocatore lancia i dadi e si muove sul tabellone del numero di caselle
risultante dal punteggio dei dadi, se fa un doppio ha diritto a giocare subito un altro turno.
• Nel momento in cui un giocatore capita su una casella ci sono una serie di azioni che può fare. Alcune
di esse possono essere obbligatorie (ad esempio pagare l'affitto oppure pescare una carta), altre
facoltative (ad esempio acquistare il terreno o costruire). Naturalmente non tutte le azioni sono
sempre disponibili (esempio non si può costruire se non si hanno tutti i terreni di uno stesso colore).
• Il giocatore decide quando termina il suo turno. Quando questo accade allora la mano passa al
giocatore successivo.
Fine del gioco:
Quando un giocatore finisce i soldi e non è in grado di pagare una tassa o un affitto, il giocatore esce dal
gioco e tutti i suoi possedimenti passano alla banca.
Presentazione delle informazioni:
Durante il corso del progetto vi si chiederà di utilizzare diverse interfacce utente.
Inizialmente sarà richiesto di fornire una semplice interfaccia testuale; successivamente sarà richiesto di
creare anche una seconda interfaccia utente, che si basa su SWING. Per questo motivo le informazioni
devono essere gestite in maniera indipendente dalla rappresentrazione, in modo da aiutarvi a separare
l'interfaccia utente dalla logica che deve rappresentare (e non lasciarvi inserire il codice per l'interfaccia
all'interno della logica del gioco in modo che al momento di passare dall'interfaccia testuale all'interfaccia
grafica non dovrete modificare l'intero sistema).
Per questi motivi vi chiediamo di creare per ogni interfaccia utente una classe che implementi l'interfaccia
programmativa "UserInterfaceConnector". Questa classe deve prendere le informazioni dalla logica del gioco
e tradurle in un formato che l'interfaccia utente possa capire (ad esempio il componente per l'interfaccia
testuale restituisce delle stringhe, quello per l'interfaccia grafica può restituire altre cose).La vostra interfaccia
utente dovrà poi usare il componente che implementa "UserInterfaceConnector".