Progetto di Programmazione Internet A.A. 2004/05

Versione 1.0 del 20 Maggio 2004

Descrizione del progetto

Il progetto consiste nell'implementazione di un programma per gestire una partita di forza quattro fra due giocatori umani.

Regole del gioco

Forza quattro si gioca in due in un tavoliere verticale formato da sette colonne da sei righe ciascuna.

Ogni giocatore è rappresentato da un colore (giallo o rosso). Lo scopo è di porre quattro pedine del proprio colore vicine, su una stessa riga, colonna o diagonale. Per fare ciò si dispone a turno una pedina in una delle sette colonne. Inizia il gioco sempre il giallo.

Le pedine incominciano a riempire una colonna dal basso, cioè cadono giù finché non raggiungono il fondo o un'altra pedina. Dopo che è stata effettuata una mossa, tocca all'altro giocatore.

Si continua così finchè il gioco termina, ossia quando un giocatore riesce ad allineare almeno quattro pedine o quando non sono possibili altre mosse perché il tabellone è pieno (patta).

Funzionamento del programma

Il programma deve presentare una finestra principale contenente il tavoliere (inizialmente vuoto) e alternare il turno fra i due giocatori (giallo e rosso) indicando attraverso una icona colorata il turno del giocatore attuale. Durante il proprio turno il giocatore potrà selezionare con un click la colonna nella quale intende giocare il proprio pezzo, nel caso in cui la colonna sia già completa il programma ignorerà il click. Nel caso in cui la giocata sia valida, il programma dovrà aggiornare il tavoliere, aggiungendo il pezzo nella colonna prescelta.

Se, a seguito di una mossa, un giocatore vince o si raggiunge la patta, il programma lo segnala attraverso una dialog box; a seguire inizia automaticamente una nuova partita.

In qualunque momento deve essere possibile uscire dal programma cliccando sul pulsante di chiusura della finestra. Nel caso in cui ci sia una partita in corso non salvata il programma deve chiedere all'utente se desidera effettuare il salvataggio prima dell'uscita.

In qualsiasi momento cliccando su un pulsante "salva" l'utente può salvare la partita attuale. Identicamente attraverso un pulsante "carica" l'utente può recuperare una partita precedentemente salvata (perdendo lo stato della partita attuale).

Il file che rappresenta la partita è formato da una sequenza di linee testuali che contengono le giocate (colonna scelta dal giocatore nel proprio turno) codificate con le lettere da 'a' (prima colonna) a 'g' (ultima colonna).

Note sull'implementazione

Il programma non dovrà fare uso di classi che non siano parte del programma stesso o che non siano parte della libreria di classi standard di Java 2, Standard Edition versione 1.5

Nello sviluppo del progetto è importante attenersi strettamente alle specifiche, pena la non valutazione del progetto.

Sviluppo del progetto

Il progetto può essere sviluppato in gruppi da due o tre studenti. In casi particolari possono essere ammessi gruppi da quattro o da uno, previa autorizzazione da richiedere alla dott.sa Turrini turrini@cs.unibo.it, giustificandone la ragione.

Per eventuali chiarimenti si suggerisce di utilizzare il newsgroup del corso. Si suggerisce anche di visitare con frequenza il newsgroup stesso e il sito del corso per verificare eventuali precisazioni e/o modifiche relative al progetto.

Tempi di consegna

Chi intende sostenere lo scritto a Giugno dovrà consegnare il presente progetto entro le ore 12 del 17 Giugno 2005; la discussione del progetto avrà luogo il 20 Giugno 2005.

Chi invece intende sostenere lo scritto a Luglio dovrà consegnare il presente progetto entro le ore 12 del 15 Luglio 2005; la discussione del progetto avrà luogo il 18 Luglio 2005.

Infine, chi invece intende sostenere lo scritto in date successive, dovrà consegnare il presente progetto entro le ore 12 del 27 Luglio 2005; la discussione avrà luogo il giorno seguente.

Non è possibile sostenere lo scritto se precedentemente non è stato consegnato il progetto.

Modalità di consegna

Occorre consegnare in formato digitale (mail a turrini@cs.unibo.it) un file in formato jar (per info sul formato jar fare riferimento a:
http://java.sun.com/docs/books/tutorial/jar/) contenente la directory (<nomeGruppo>) che a sua volta deve contenere le seguenti directory:

La mail deve avere subject "consegna progetto <nomeGruppo>" e in allegato il file <nomeGruppo>.jar.
Il nome gruppo deve essere di al massimo 8 digit (lettere o numeri) (può essere formato con le sillabe iniziali dei cognomi) e deve contenere solo lettere e numeri; all'interno del messaggio vanno specificati i nomi degli appartenenti al gruppo.

La documentazione deve essere consegnata anche in formato cartaceo lasciandola nella casella di posta degli assegnisti (che si trova al primo piano del dipartimento di Scienze dell'Informazione) indirizzata alla dott.sa Turrini.

Vanno consegnati in forma cartacea il file project.html e tutti i file sorgenti stampati in orizzontale (sotto linux si puo' usare enscript -r nomefile). Ogni stampa deve essere graffettata nell'angolo in alto a sinistra.

I tempi per la consegna della documentazione cartacea sono gli stessi della consegna del progetto. 

Se siete interessati ad avere maggiori informazioni sul gioco potete consultare questo testo.