it.prazzoli.tictactoe
Class AI

java.lang.Object
  extended by it.prazzoli.tictactoe.AI

public class AI
extends java.lang.Object

Classe per la gestione del modulo AI Il funzionamento della logica della classe è basato su due funzioni ricorsive che si chiamano vicendevolmente con lo scopo di eseguire una analisi dell’albero del gioco, secondo la modalità desiderata contenuta nel modulo di configurazione. Per analizzare il funzionamento, possiamo supporre di giocare una partita tra un giocatore ( GIOCATORE1 ) e un l’avversario virtuale la cui decisioni sono affidate all’oggetto AI. Supponiamo di trovarci nella condizione in cui GIOCATORE1 ha appena eseguito la scelta della mossa, il modulo AI deve dunque decidere la mossa successiva partendo dalla configurazione corrente del gioco. Si verifica dapprima se il gioco può proseguire oppure se la mossa appena eseguita da parte di GIOCATORE1 ha portato ad una condizione di termine del gioco (game over). In caso affermativo si valuta lo stato della board corrente e supposto che il gioco non può proseguire deve necessariamente contenere una condizione di vincita o pareggio. In caso di vincita significa che GIOCATORE1 ha vinto la partita, la funzione restituirà un valore di ritorno corrispondente a –INFINITO, se la partita è pareggiata si restituirà ZERO. I valori restituiti dalla funzione che si occupa di analizzare la board sono dovuti al fatto che il modulo AI si occupa di massimizzare le vincite per il giocatore virtuale. Se al contrario il gioco non è terminato, il modulo AI analizza l’albero del gioco selezionando una mossa tra quelle possibili, successivamente la configurazione del gioco così ottenuta, viene passata alla funzione che si occupa di analizzare la board dal punto di vista del GIOCATORE1. E’ possibile selezionare differenti tipologie di algoritmi tra cui: ricerca completa ed esaustiva dell’albero del gioco, ricerca eseguita con algoritmo Alpha-beta pruning.

Author:
Maurizio Prazzoli, maurizio@prazzoli.it
See Also:
debugger

Constructor Summary
AI(player cPlayer, player oPlayer, board cBoard)
          Costruttore default
AI(player cPlayer, player oPlayer, board cBoard, AIConfiguration conf)
          Costruttore
 
Method Summary
 cell findBestMove()
          Avvia la ricerca della Miglior Mossa utilizzando la configurazione fornita
 boolean getDebugEnabled()
          Restituisce la condizione di debug attivo o disattivo
 void InitDebug(boolean status)
          Abilita o disabilita il DEBUG relativo al modulo AI
 java.lang.String printStats()
          Restituisce informazioni di reportistica sul numero di board analizzate e sui tempi impiegati
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

AI

public AI(player cPlayer,
          player oPlayer,
          board cBoard)
Costruttore default

Parameters:
cPlayer - player corrente di cui interessa la miglior mossa
cPlayer - giocatore avversario
cBoard - board corrente

AI

public AI(player cPlayer,
          player oPlayer,
          board cBoard,
          AIConfiguration conf)
Costruttore

Parameters:
cPlayer - player corrente di cui interessa la miglior mossa
cPlayer - giocatore avversario
cBoard - board corrente
conf - oggetto AIConfiguration contiene la configurazione del modulo AI
Method Detail

InitDebug

public void InitDebug(boolean status)
Abilita o disabilita il DEBUG relativo al modulo AI

Parameters:
status - attivo = true; disattivo = false

getDebugEnabled

public boolean getDebugEnabled()
Restituisce la condizione di debug attivo o disattivo


findBestMove

public cell findBestMove()
Avvia la ricerca della Miglior Mossa utilizzando la configurazione fornita

Returns:
BestMove oggetto cella corrispondente alla migliore mossa

printStats

public java.lang.String printStats()
Restituisce informazioni di reportistica sul numero di board analizzate e sui tempi impiegati