Progetto di Programmazione Internet A.A. 2005/06

Versione 1.3 del 8 giugno 2006

Descrizione del progetto

Il progetto consiste nell'implementazione di un programma per gestire una partita di Master Mind fra un giocatore umano e un computer.

Regole del gioco

In Master mind, il codificatore (nel nostro caso il computer) genera un codice composto da una sequenza casuale di quattro colori scelti tra sei (sono ammessi i colori ripetuti).

Scopo del giocatore è indovinare l'esatta sequenza di colori generata dal codificatore. Per fare ciò si hanno a disposizione otto tentativi.

Il gioco termina quando il giocatore riesce ad indovinare la sequenza o quando non ha più tentativi a disposizione.

Il gioco si svolge su di un tavoliere composto da otto righe. Ogni riga è composta da una zona codice (a sinistra) e una zona suggerimenti (a destra). Nella zona codice il giocatore può inserire un codice composto da quattro pioli colorati che vengono disposti orizzontalmente uno accanto all'altro. Il colore di ogni piolo può essere scelto fra: giallo, arancione, celeste, verde, rosso, nero.

Dopo che il giocatore ha inserito un codice, nella zona suggerimenti vengono inseriti dal computer fino a quattro pioli (organizzati su due righe da due) con il seguente significato:

L'ordine dei pioli della zona suggerimenti non corrisponde all'ordine dei colori nel codice inserito dal giocatore. Nel caso il codice inserito sia quello corretto compariranno quattro pioli neri e il gioco avrà termine.

Funzionamento del programma

Il programma deve presentare una finestra principale contenente il tavoliere (inizialmente vuoto) nel quale il giocatore inserisce, una per volta, le sequenze di colori corrispondenti ai vari tentativi a partire dalla riga più in basso.

All'inizio di ogni partita il computer genera il codice in maniera casuale. In alternativa, è possibile inserire il codice da linea di comando, indicando le lettere iniziali (in maiuscolo) dei colori che lo compongono (ad es: RRAC indica il codice rosso, rosso, arancione, celeste). In ogni caso la sequenza non viene visualizzata.

Sulla destra del tavoliere è presente una griglia che mostra i sei colori. Sopra la griglia viene mostrato il colore attualmente selezionato. Per modificare tale colore il giocatore clicca su un altro colore presente nella griglia. All'inizio di una nuova partita è selezionato di default il colore giallo.

Il giocatore può disporre un colore nel tavoliere cliccando sulla colonna prescelta. Nel caso la colonna sia valida, il programma dovrà aggiornare il tavoliere aggiungendo il colore selezionato alla colonna prescelta, in caso contrario ignorerà il click.

Dopo che il giocatore ha disposto una sequenza, il computer la confronta con quella da indovinare e mostra il risultato del confronto nella zona relativa.

Se, a seguito di una mossa, un giocatore vince o si raggiunge il limite degli otto tentativi, il programma lo segnala attraverso una dialog box (nel caso il giocatore non abbia indovinato, nella dialog box viene mostrata l'esatta sequenza); a seguire inizia automaticamente una nuova partita.

Nella finestra di gioco devono essere presenti tre pulsanti: "spia", "nuova partita", e "classifica". Cliccando sul primo viene mostrata la sequenza generata dal computer, cliccando sul secondo viene iniziata una nuova partita, cliccando sul terzo viene mostrata in una dialog box la classifica delle dieci migliori giocate, mostrando nome giocatore, numero tentativi e tempo impiegato. In tutti i casi il gioco continua regolarmente. Una giocata è migliore di un'altra se presenta un minor numero di tentativi, o, a parità di questi un minor tempo impiegato per indovinare la soluzione.

Tale classifica deve essere memorizzata in formato XML in un file che deve essere caricato ad ogni avvio di programma. Al termine di ogni partita, il programma verifica se essa rientra fra le migliori dieci. In caso affermativo, attraverso una dialog box, viene chiesto al giocatore di inserire il proprio nome e viene visualizzata la classifica aggiornata.

In qualunque momento deve essere possibile uscire dal programma cliccando sul pulsante di chiusura della finestra.

Note sull'implementazione

Per la gestione dei documenti in formato XML si può utilizzare la libreria JDom (http://www.jdom.org/); per utilizzarla scaricare il file http://www.jdom.org/dist/binary/jdom-1.0.zip, estrarre il file jdom.jar e i file .jar contenuti nel directory lib del file zip e metterli nel classpath.

Il programma non dovrà fare uso di classi che non siano parte del programma stesso, di JDom, 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 ammesssi gruppi da uno, previa autorizzazione da richiedere alla dott.sa Turrini turrini@cs.unibo.it, giustificandone la ragione. Non sono ammessi gruppi da quattro.

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.

Tempi di consegna

Chi intende sostenere lo scritto a Giugno dovrà consegnare il presente progetto entro le ore 14 del 23 Giugno 2006; la discussione del progetto avrà luogo il 26 e il 27 Giugno 2006.

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

Infine, chi invece intende sostenere lo scritto in date successive, dovrà consegnare il presente progetto entro le ore 9 del 25 Luglio 2006; la discussione avrà luogo il 27 luglio 2006

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 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 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.

 

Cambiamenti

Da 1.0 a 1.1

Nella sezione "Tempi di consegna" modificate le date di giugno relative alla consegna e alla discussione del progetto.

Nella sezione "Modalità di consegna" aggiunta la directory lib.

Da 1.1 a 1.2

Nella sezione "Tempi di consegna" modificate le date di giugno relative alla discussione del progetto.

Nella sezione "Modalità di consegna" aggiunta la frase: "Chi consegna entro la prima data deve specificare (nel corpo della mail) se almeno uno degli appartenenti al gruppo intende sostenere lo scritto a giugno."

Da 1.2 a 1.3

Nella sezione "Note sull'implementazione" sono state aggiunte delle puntualizzazioni su JDom.