Progetto C# a gruppi

Transcript

Progetto C# a gruppi
Liceo scientifico opzione scienze applicate “Marie Curie”
classe 5D
Il gioco del Tris
Progetto di programmazione orientata agli oggetti in C# da realizzare a gruppi di lavoro
Specifiche in sintesi del progetto:
-
3 modalità di gioco, selezionabili in alternativa ad inizio gioco.
Software realizzato secondo il paradigma OOP
Interfaccia grafica (sarà oggetto di ulteriori lezioni in classe)
Relazione del progetto: vanno esplicitati i contributi apportati da ciascuno studente ed una
breve documentazione delle scelte implementative effettuate.
Effetto speciale (facoltativo): un elemento da aggiungere a discrezione del gruppo che
rappresenti un valore aggiunto, cioè la propria “firma”.
1° modalità di gioco: giocatore umano contro giocatore umano
-
Scrivere un programma che realizza il gioco del tris (o filetto) tra due giocatori umani.
In particolare, ciascun giocatore ha un simbolo ed una mossa consiste nel posizionare, a
turno, il proprio simbolo in una cella libera.
Vince chi per primo riesce a comporre una sequenza di tre simboli uguali, allineati in
orizzontale, verticale oppure diagonale.
Se la scacchiera viene riempita senza alcun vincitore, vince chi ha più sequenze (non
sovrapposte) di due simboli.
2° modalità di gioco: giocatore umano contro giocatore virtuale che utilizza una tattica prestabilita
-
-
-
Modificare il programma precedente in modo che uno dei due giocatori sia virtuale,
e conduca la partita seguendo le seguenti tattiche prestabilite.
Controlla prima se può vincere (provando a posizionare il proprio simbolo in una cella
libera (e provando per tutte le celle libere) per vedere se è possibile un tris in una sola
mossa. In tal caso la esegue.
Se non è possibile vincere in una sola mossa, il giocatore virtuale prova a vedere se è
l’avversario a poter vincere in una sola mossa occupando una data cella. In tal caso cerca
di ostacolarlo occupando la cella mediante il proprio simbolo. Se vi fossero due celle di
questo tipo l’avversario vincerebbe comunque, in quanto in una sola mossa se ne potrebbe
occupare una soltanto.
Se non avviene alcuno dei casi precedenti, il giocatore esegue una mossa casuale.
3° modalità di gioco: giocatore umano contro giocatore artificiale in grado di apprendere
-
-
-
Modificare il programma precedente in modo che il giocatore virtuale (macchina) conduca
la partita imitando il giocatore reale (umano). In particolare, la macchina memorizza tutte le
mosse del giocatore reale in un file. Quando è il suo turno, cerca in tale file se in passato
(nelle partite precedenti) vi è stata una situazione identica per l’umano. In tal caso esegue
la medesima mossa che eseguì l’umano, altrimenti esegue una mossa a caso.
Per semplicità, la macchina memorizza ogni mossa senza controllare se la medesima
mossa era stata già memorizzata, quindi è possibile che vi siano dei duplicati. Inoltre essa
memorizza ogni mossa senza controllare che sia una mossa buona o cattiva, per cui
l’umano dovrebbe essere un giocatore esperto.
Per fare in modo che le situazioni presentate all’umano si ripropongano alla macchina, la
scelta di chi inizia per primo è casuale.
1
-
Per ogni mossa, viene salvato nel file lo stato della scacchiera e le coordinate della mossa
eseguita. Lo stato della scacchiera va codificato in modo efficiente.
Compiti vari:
- Progettazione delle classi e relazioni tra di esse
- Implementazione delle classi in C#
- Realizzazione dell’interfaccia grafica
- Documentare il lavoro svolto
Consegna del progetto
Il progetto, comprensivo di relazione, codice sorgente e altri file utili per la compilazione del
programma (file di progetto e risorse), deve essere consegnato per posta elettronica
([email protected]) al docente entro il 14 dicembre 2016 mediante un allegato in
formato compresso .zip o .rar o .tar.gz.
NOTA BENE: in un unico allegato compresso: CODICE+RELAZIONE.
La relazione deve contenere:
- Spiegazione dettagliata del contributo apportato da ciascun componente. In tal senso
anche il programma sorgente deve riportare la “firma” dello sviluppatore che ha realizzato i
singoli blocchi di codice. Per firma si intende un commento riportante le iniziali di nome e
cognome dello sviluppatore che ha prodotto il codice indicato a seguire (es. //FTA invece di
Francesco Tapp )
- Presentazione delle classi utilizzate e delle principali scelte implementative effettuate.
Il codice sorgente sviluppato in C#:
•
•
•
•
Deve essere originale, ovvero non copiato da altri studenti, da siti web
Deve essere compilabile senza che vengano segnalati errori o messaggi di warning.
Deve essere leggibile, ovvero:
o privo di identificatori (cioè variabili) non evocativi di ciò che rappresentano
o ben strutturato
o ben commentato
o ben indentato
o ben spaziato
Deve essere basato sui principi della programmazione ad oggetti:
o incapsulamento e occultamento della informazione (information hiding)
o ereditarietà
o polimorfismo (se possibile)
o È consigliato e incoraggiato il riutilizzo del codice.
Ogni inosservanza di quanto stabilito sopra a proposito della preparazione della relazione e dello
sviluppo del software determina una riduzione nel voto attribuito al progetto.
Valutazione
- Il voto sarà personale e quindi attribuito al singolo studente sulla base dei seguenti
indicatori:
o Punteggio attribuito al progetto nella sua globalità sulla base di quanto indicato
sopra (sarà considerata con attenzione l’equi-ripartizione dei compiti).
o Contributo apportato dal singolo studente: qualità ed entità del contributo.
o Presentazione del progetto nella data concordata.
o Domande del docente ai singoli studenti nel giorno della presentazione.
o Punteggio BONUS attribuito dagli altri studenti appartenenti ad un altro gruppo
(ciascuno studente esprimerà 2 preferenze sui progetti visti ed il progetto che
riceverà il maggior numero di preferenze riceverà un bonus in termini di punteggio)
2
La presentazione in classe:
- 25 minuti totali di cui
o 10 minuti (max): presentazione del progetto da parte di 2 portavoce
o 15 minuti: domande da parte del docente ai singoli studenti
- Date di presentazione:
o Venerdì 16 dicembre(consegna entro 14 dicembre): gruppo 1 (5 componenti) e
gruppo 3 (4 componenti)
o Lunedì 19 dicembre(consegna entro 14 dicembre): gruppo 2 (5 componenti) e
gruppo 4 (4 componenti)
o Venerdì 23 dicembre(consegna entro 14 dicembre): gruppo 5 (4 componenti) e
gruppo 6 (4 componenti)
Disposizioni operative
o
o
o
o
o
I gruppi sono da rispettivamente 5,5,4,4,4,4 componenti ciascuno.
Inviare prima possibile al docente(non oltre il 17/11) i gruppi di lavoro ed il nome di un
coordinatore per ciascun gruppo. Chiedo ai rappresentanti di classe di fare da interfaccia
per questa operazione.
Il lavoro in classe fino a Natale sarà dedicato a questo progetto: lezioni mirate e possibilità
di lavorare in gruppo nelle ore in laboratorio.
Anche la verifica del 9 dicembre sarà pensata a partire da questo progetto.
Chiedo al coordinatore di ogni gruppo di mandarmi una mail di aggiornamento sullo stato
dei lavori entro Sabato 3 dicembre.
Rimango in attesa e a disposizione per chiarimenti.
Buon lavoro!!
3