Teoria dei Giochi

Dama Italiana

 1. Il Gioco

In questo capitolo vi è una spiegazione di come funziona il gioco della dama italiana e delle regole che devono essere rispettate e sono sono state utilizzate per l'implementazione. In Sezione 1.2 sono spiegate le convenzioni utilizzate per realizzare il gioco ed in Sezione  1.3 viene illustrato come funziona il gioco.

1.1  Regole del gioco

Come preannunciato, il progetto è stato realizzato utilizzando le regole della dama italiana reperibili nel sito della Federazione Italiana Dama [2].

Di seguito è riportata una breve spiegazione del gioco della dama nella versione italiana e di tutte le regole che devono essere applicate.

La damiera si compone di 64 caselle alternate per colore, bianche e nere, e va posizionata con l'ultima casella in basso a destra di colore nero.

  1. Ciascun giocatore dispone all'inizio di 12 pedine, di colore diverso da quelle dell'avversario (bianche o nere), collocate sulle prime tre righe di caselle scure poste sul proprio lato della damiera.
  2. La pedina si muove sempre in diagonale sulle caselle scure di una casella alla volta e soltanto in avanti. Quando una pedina raggiunge una delle caselle dell'ultima riga viene promossa, diventa dama e deve essere contraddistinta con la sovrapposizione di un'altra pedina prelevata tra quelle non in gioco.
  3. Ogni pedina può mangiare quelle avversarie che si trovano in avanti, sulla casella diagonale accanto alla propria e che abbiano la casella successiva libera. Dopo la presa, se incontrano in diagonale altre pedine con la successiva casella libera, si deve continuare a mangiare senza togliere la mano dalla pedina stessa. In tal caso la presa si chiama multipla. Le pedine prese vanno tolte dalla damiera.
  4. La dama si muove anch'essa di una casella alla volta, sempre in diagonale, in tutte le direzioni possibili, mangiando sia le pedine che le dame avversarie.
  5. In caso di possibibilità di presa è obbligatorio mangiare i pezzi.

  6. Avendo più possibilità di presa si debbono rispettare obbligatoriamente nell'ordine le seguenti priorità:

    1. è obbligatorio mangiare dove ci sono più pezzi;
    2. a parità di pezzi di presa tra pedina e dama, quest'ultima è obbligata a mangiare;
    3. la dama sceglie la presa dove si mangiano più dame;
    4. a parità di condizioni si mangia dove s'incontra prima la dama avversaria.
  7. Si vince per abbandono dell'avversario, che si trova in palese difficoltà, o quando si catturano o si bloccano tutti i pezzi avversari.
  8. Si pareggia in una situazione di evidente equilibrio finale a seguito del conteggio di 400 mosse di dama. Il conteggio delle mosse si azzera e riparte da capo tutte le volte che uno dei due giocatori muove una pedina.

Il giocatore che deve eseguire la prima mossa per convenzione è sempre quello che utilizza le pedine nere. Inoltre, ogni giocatore non ha un tempo fissato entro il quale deve rispondere. In realtà, nel realizzare il giocatore artificiale si è cercato di imporre un limite temporale arbitrario, entro il quale dare una risposta, per non richiedere attese troppo lunghe.

1.2  Convenzioni

Ogni casella della damiera è individuata attraverso due coordinate che ne indicano rispettivamente la riga e la colonna di appartenenza. Tale coordinate sono state assegnate immaginando di posizionare la damiera nel quarto quadrante di un diagramma cartesiano, con l'angolo in alto a sinistra coincidente con l'origine degli assi. In Figura  si può vedere uno screen-shot della damiera del gioco; in ogni cassella è indicato il valore delle coordinate.

Figure 1.1: Immagine della damiera.

Dalla Figura 1.1 si può anche osservare come sono posizionate le pedine sulla damiera: nella parte inferiore si trovano le dodici pedine del giocatore nero, mentre nella parte superiore quelle del giocatore bianco. Pertanto il giocatore nero si muove verso valori decrescenti, lungo l'asse delle y, mentre il giocatore bianco, percorrendo il verso opposto, si muove verso valori crescenti.

Una mossa è uno spostamento di un pezzo da una casella ad un'altra della damiera, eseguito in un solo turno. Vi sono tre tipi di mosse possibili.

  • mossa semplice: uno spostamento in diagonale di un pezzo nella casella adiacente libera, nel verso consentito.
  • cattura singola: la cattura di un solo pezzo avversario, che consiste di uno spostamento lungo la diagonale nel verso consentito di due caselle, saltando quella nel mezzo sulla quale deve esserci un pezzo avversario. Il pezzo "mangiato" verrà eliminato dalla damiera.
  • catture multple: sono due o più catture singole che si possono eseguire sequenzialmente nel caso in cui la casella di arrivo di una cattura singola coincida con quella di partenza per una nuova cattura.

Ogni mossa che viene eseguita da un giocatore è della forma:


((x0,y0), ..., (xn,yn))

ove con la coppia (x0,y0) si indicano le coordinate x ed y di partenza, ossia la posizione all'interno della damiera della pedina che si è deciso di muovere, le altre coppie (xj,yj) indicano le coordinate della casella j_esima che si attraversa nella sequenza della mossa e (xn,yn) la casella di arrivo, ove termina la mossa e si ferma la pedina.

1.3  Funzionalità del gioco

Il gioco è stato realizzato con una Applet implementata utilizzando Java 1.5.

Quando si avvia il gioco, appare come prima schermata la damiera con le pedine posizionate nella configurazione iniziale del gioco, come mostrato in Figura 1.2.

Figure 1.2: Immagine della prima schermata del gioco della dama.

Al centro della damiera, una scritta indica che per iniziare il gioco è necessario premere il bottone New Game posizionato sopra la damiera a sinistra. Accanto a questo si trova il bottone Stop Game che permette di terminare il gioco e ripristinare la damiera nella configurazione iniziale.

A lato della damiera, come si nota in Figura 1.2 si trovano due aree con le opzioni che possono essere scelte rispettivamente per il giocatore bianco a sinistra e quello nero a destra. Per ambdue i giocatori si può scegliere il tipo di giocatore, ossia se si desidera che sia umano o computer, si veda Figura 1.3. Il gioco permette che due computer giochino uno contro l'altro, oppure due umani o un computer ed un umano.

Figure 1.3: Area di visualizzazione del menù di scelta del giocatore.

Nel caso in cui si decida di utilizzare la modalità computer e far giocare l'intelligenza artificiale, si possono scegliere due parametri: il tipo di funzione di valutazione che si vuole far utilizzare per scegliere la mossa migliore; la profondità che si vuole raggiungere nella ricerca all'interno dell'albero. Per quanto riguarda la funzione di valutazione sono state realizzati cinque diversi tipi di funzione, spiegate in Sezione 3.7, mentre per la profondità si può giocare facendo una ricerca di 2, 4, 6, 8, 10 ply.

Vedi figure 1.4 e 1.5


Figura 1.4: Visualizzazione del menù di scelta delle funzioni

Figura 1.5: Visualizzazione del menù di scelta della profondità dell'albero di ricerca

Nella configurazione iniziale, il gioco inizia con le seguenti impostazioni di default: il giocatore nero è umano mentre quello bianco è il computer. In ambedue i casi la profondità selezionata è quattro e la funzione di valutazione impostata è Originale.

Accanto alla barra laterale di scelta del menu per il giocatore nero, si trova un'area dove vengono scritte tutte le mosse che sono state eseguite, specificando il giocatore che le ha realizzate. In Figura 1.6 si può osservare una sequenza di mosse eseguita dai due giocatori durante una partita.


Figura 1.5: Visualizzazione dell'area che mostra lo storico delle mosse eseguite

Sotto la damiera, viene indicato lo stato del gioco. In caso di vincita di uno dei due giocatori, viene visualizzato il messaggio di vittoria ed il nome del giocatore; se si verifica un pareggio viene mostrato il messaggio di patta; nel caso di partita regolare, viene visualizzato chi è il prossimo giocatore cui spetta la prossima mossa.

Dopo aver premuto il tasto New Game, il gioco può iniziare. Nel caso in cui si sia selezionato che il giocatore nero sia il computer, automaticamente verrà eseguita la prima mossa e successivamente toccherà al secondo giocatore muovere. Se il giocatore è umano per poter eseguire la propria mossa, deve selezionare la pedina che desidera spostare cliccando con il mouse sulla casella che la contiene. Se tale pedina può essere mossa la relativa casella verrà evidenziata in arancione per indicare che è stata selezionata, altrimenti di rosso per indicare che tutte le mosse che iniziano da quella casella sono vietare. Nel caso in cui venga cliccato su una regione al di fuori della damiera, su caselle vuote o su una casella contenente un pezzo avversario non verrà mostrata alcuna selezione. Per continuare ad eseguire la mossa è necessario cliccare su tutte le caselle che si devono attraversare per eseguirla.

In ogni momento del gioco è possibile cambiare la tipologia del giocatore, il valore della profondità e la funzione di valutazione impostata ed il gioco proseguirà con le nuove impostazioni.

Il gioco originale scaricato dalla rete permetteva di passare il proprio turno, ossia di decidere di non eseguire alcuna mossa e lasciare il turno all'avversario. Tra le regole ufficiali riportate nel sito della Federazione Italiana Dama non si è trovata questa possibilità e si è deciso di rimuovere tale opzione ed obbligare ogni giocatore ad eseguire esattamente una mossa ad ogni turno.