Corso di Interfacce Utente - A.A. 2008-2009
PROGETTO DI LABORATORIO
Vedere la pagina principale
del progetto per gli altri documenti.
Classi per l'applicazione "Gioco della dama"
L'applicazione e' implementata dalle seguenti classi Java:
- Casella:
Implementa una posizione nella scacchiera individuata da due indici
interi riga, colonna.
- Mossa:
Implementa una mossa, ha una lista di caselle toccate
dal pezzo che si muove (di cui la prima e' la casella da cui parte
e l'ultima e' la casella dove va a finire) e una lista di caselle
corrispondenti alle posizioni delle pedine mangiate.
Inoltre un booleano dice se questa mossa termina con la promozione di
una pedina a dama (perche' tocca la sponda opposta della
scacchiera).
- Scacchiera:
Implementa la scacchiera come situazione a riposo,
la sua sottoclasse Gioco definira' anche come si possono muovere
i vari pezzi presenti sulla scacchiera.
La scacchiera ha 8x8 caselle alterate bianche e nere.
Nelle sole caselle nere puo' essere presente un pezzo, che
puo' essere una pedina o una dama, di colore bianco o nero.
- Gioco:
Sotto-classe di Scacchiera, aggiunge informazioni e metodi
riguardanti il movimento dei pezzi: direzioni possibili di movimento,
controllo se una mossa sia possibile, generazione delle mosse
possibili ecc.
- ValutaMosse:
Contiene utilita' per decidere la mossa migliore
tra quelle possibili.
Ogni situazione di scacchiera ha, dal punto di vista di un giocatore,
una valutazione numerica che si calcola contando il numero di pedine
e dame sue e avversarie, e contando se eventualmente la partita
e' stata vinta da lui o dall'avversario.
Una mossa e' valutata nel modo seguente: si simula la mossa,
si simulano tutte le possibili contromosse avversarie,
si considera la situazione peggiore in cui ci si potrebbe
trovare (dopo questa mossa e la contromossa avversaria).
La mossa migliore, per questo giocatore, e' quella che genera, dopo
la peggiore contromossa avversaria, la situazione migliore per me.
Per dettagli vedere la documentazione e i sorgenti Java:
- Casella
e Casella.java
- Mossa
e Mossa.java
- Scacchiera
e Scacchiera.java
- Gioco
e Gioco.java
(attenzione: in data 5/5/09
e' stato corretto un errore in questo file,
la versione attuale e' quella nuova)
- ValutaMosse
e ValutaMosse.java
Nota:
Queste classi sono da usare "a scatola chiusa" senza modificarle.
Altra nota (transitoria):
La generazione della mossa automatica nella versione presente e' piuttosto
stupida: a volte la mossa scelta come migliore in automatico e'
chiaramente non la mossa migliore nella situazione attuale, per il
giocatore.
Mi riservo in seguito di fornire un nuovo file con questa funzione
migliorata, mantenendo inalterato il nome e i parametri della
funzione (cosi' che il nuovo file possa sostituire
il vecchio in modo del tutto trasparente).