Professori: Luigi Palopoli, Simona Nisticò
Candidati del gruppo "crAIzy":
- Danny Di Cello
- Raffaele Miriello
- Giuseppe Seminara
- Francesco Palumbo
Fission è un gioco da tavolo per il quale occorre una scacchiera 8x8, 12 pedine bianche e 12 pedine nere, all’interno del gioco si possono avere solo pedine singole.
- All’inizio di ciascuna partita le pedine vengono posizionate come indicato nella figura a lato.
- La partita comincia con una mossa del giocatore bianco.
- Lo scopo del gioco è quello di eliminare tutte le pedine dell’avversario.
I giocatori, a turno, muovono una delle loro pedine, le possibili direzioni di mossa comprendono tutte le direzioni orizzontali, verticali ed oblique come mostrato nella figura a lato. Indipendentemente da quale sia la direzione della mossa la pedina avanzerà fino a quando non incontrerà un bordo oppure un’altra pedina, a seconda di quale sia la motivazione di arresto si verificheranno una delle seguenti condizioni:
- Nel caso in cui la pedina si sia arrestata perché ha incontrato un muro, non verrà effettuata alcuna modifica della configurazione eccetto per quelle avvenute a seguito del movimento.
- Nel caso in cui la pedina si sia arrestata perché ha incontrato una pedina allora verranno eliminate dalla scacchiera la pedina mossa, quella contro cui si è “scontrata” e tutte le pedine adiacenti ad essa (nella figura sottostante il riquadro chiaro indica l’area di adiacenza per la mossa considerata) viene evidenziato cosa si intenda per pedine adiacenti); questo a prescindere dal loro colore. Le pedine eliminate lo saranno definitivamente e quindi non rientreranno più nel gioco.
Il gioco si conclude quando uno dei due giocatori non ha più pedine sulla scacchiera, in questo caso la vittoria verrà assegnata al giocatore a cui appartengono le pedine rimanenti. Il gioco prevede il pareggio ed in particolare sono tre le condizioni in cui esso si verifica:
- Entrambi i giocatori rimangono con una sola pedina.
- Il giocatore che deve effettuare la mossa non ha mosse disponibili.
- La scacchiera rimane vuota.
Per ulteriori informazioni sul gioco consultare: http://www.di.fc.ul.pt/~jpn/gv/fission.htm
Messaggi dal Server al Client:
| Message | Description |
|---|---|
| WELCOME <colour> | Il server comunica al client il colore che gli è stato assegnato |
| MESSAGE <message> | Il server comunica al client qualcosa |
| OPPONENT_MOVE <move> | Il server comunica al client l'ultima mossa dell'avversario |
| YOUR_TURN | Il server comunica al client che è il suo turno |
| VALID_MOVE | Il server conferma al client che la sua ultima mossa è valida |
| ILLEGAL_MOVE | Il server informa il client che la sua ultima mossa non è valida (l'avversario vince) |
| TIMEOUT | Il server informa il client che il tempo per comunicare la mossa è scaduto |
| VICTORY | Il server informa il client che ha vinto la partita |
| TIE | Il server informa il client che la partita è finita in parità |
| DEFEAT | Il server informa il client che ha perso la partita |
Messaggi dal Client al Server:
| Message | Description |
|---|---|
| MOVE <move> | Il client comunica la mossa |
Dove:
- <colour>: Black/White
È una stringa che rappresenta il colore associato al giocatore; è assegnata dal server e comunicata al client insieme al messaggio WELCOME. Il bianco muove per primo. - <move> := <start>,<dir>
La mossa è codificata tramite due stringhe separate da virgola che indicano rispettivamente: la cella di partenza e la direzione della mossa. - <start>
Ogni cella è univocamente determinata da una lettera e un numero. Si è deciso di etichettare le righe con le lettere da A a G e le colonne con i numeri da 1 a 8 (vedi figura seguente), perciò, un giocatore che voglia muovere una pedina posta in F5 invierà al server la stringa “F5”.
- <dir>
La direzione della mossa è fornita specificando la coordinata geografica verso cui si desidera muovere la propria pedina:
N: nord
NE: nord-est
E: est
SE: sud-est
SW: sud-ovest
W: ovest
NW: nord-ovest
Segue un esempio di comunicazione tra il server e il giocatore bianco
ALTRI DETTAGLI
- Il torneo è all’italiana e prevede quindi un girone di andata ed un girone di ritorno; durante ciascuna partita per la vittoria vengono assegnati 3 punti, per la sconfitta vengono assegnati 0 punti, in caso di pareggio viene assegnato 1 punto a ciascuno dei due giocatori.
- Il tempo di mossa è fissato in un secondo (tempo rilevato al server che intercorre dal momento in cui il server invia il messaggio YOUR_TURN al momento in cui lo stesso server riceve la nuova mossa dal giocatore coinvolto). Qualora il server non ricevesse la mossa dal giocatore entro il tempo previsto, tale giocatore sarebbe dichiarato sconfitto e la partita conclusa.
- All’inizio del gioco viene garantito un tempo pari a 30 secondi prima che il server invii il primo messaggio YOUR_TURN al giocatore che apre la partita (tempo di warm-up).
- La durata della partita è fissata in 50 mosse per ogni giocatore. Raggiunto tale limite verrà dichiarato il pareggio.
- In caso di crash del giocatore la vittoria viene assegnata all’avversario, indipendentemente da quali siano le motivazioni che lo hanno causato.
- Ogni giocatore artificiale deve poter ricevere i seguenti parametri all'avvio: indirizzo IP del server e il numero di porta del server. La calendarizzazione delle sessioni di test, di deploy e consegna del progetto nonché i formati di consegna saranno fissate in una comunicazione separata.





