Il progetto consiste nell'implementazione di un programma per gestire una partita di scacchi tra due giocatori umani.
Il programma deve presentare una finestra principale contenente la schacchiera (completa delle indicazione delle traverse e delle colonne) sulla quale sono posizionati i 16 pezzi bianchi e i 16 pezzi neri secondo la disposizione iniziale prevista dal regolamento.
Ogni giocatore a turno può effettuare una mossa. A questo scopo il giocatore deve selezionare il pezzo che desidera muovere. Tale selezione dovrà avvenire cliccando con il mouse sul pezzo da selezionare; a seguito della selezione cambia il colore dello sfondo del pezzo in esame in modo tale che visivamente risulti diverso dagli altri pezzi. Se un giocatore si accorge di avere selezionato il pezzo sbagliato potrà annullare la selezione cliccando nuovamente sul pezzo selezionato (in questo caso lo sfondo ritornerà del colore originario). Una volta selezionato un pezzo, il giocatore potrà spostarlo nella posizione desiderata cliccando sulla casella di destinazione. Non è possibile annullare la mossa effettuata. Ad ogni giocatore deve essere consentito solo di selezionare i propri pezzi. Il programma dovrà controllare la validità di ogni mossa e nel caso questa non sia valida non permettere lo spostamento del pezzo e avvisare il giocatore emettendo un suono.
A seguito di ogni mossa il programma deve controllare se :
Nel primo caso la partita è vinta; nel secondo caso la partita è patta. In entrambi i casi il programma comunica il risultato della partita ai giocatori e chiede se vogliono iniziare una nuova partita.
Nella finestra di gioco devono essere presenti 3 pulsanti: "nuova partita", "carica partita" e "salva partita".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 stesso.
Il progetto può essere sviluppato in gruppi da due, tre o quattro studenti. In casi particolari possono essere ammesssi gruppi da uno, previa autorizzazione da richiedere alla dott.sa Turrini turrini@cs.unibo.it, giustificandone la ragione. I gruppi da quattro sono ammessi ma non consigliati.
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.
Chi intende sostenere lo scritto a Giugno dovrà consegnare il presente progetto entro le ore 14 del 13 Giugno 2007; indicativamente la discussione del progetto avrà luogo il 15 Giugno 2007.
Chi invece intende sostenere lo scritto a Luglio dovrà consegnare il presente progetto entro le ore 14 del 13 Luglio 2007; indicativamente la discussione del progetto avrà luogo il 17 Luglio 2007.
Infine, chi invece intende sostenere lo scritto in date successive, dovrà consegnare il presente progetto entro le ore 14 del 20 Luglio 2007; indicativamente la discussione avrà luogo la settimana successiva.
Non è possibile sostenere lo scritto se precedentemente non è stato consegnato il progetto.
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 conterrà le seguenti directory:
La mail deve avere subject "consegna progetto
<nomeGruppo>" e in attachment il file <nomeGruppo>.jar.
Il nome gruppo deve essere di al massimo otto 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.
Chi consegna entro la data di giugno deve specificare (nel corpo della mail) se almeno uno degli appartenenti al gruppo intende sostenere lo scritto a giugno.
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 può 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.