|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectit.prazzoli.tictactoe.AI
public class AI
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.
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 |
---|
public AI(player cPlayer, player oPlayer, board cBoard)
cPlayer
- player corrente di cui interessa la miglior mossacPlayer
- giocatore avversariocBoard
- board correntepublic AI(player cPlayer, player oPlayer, board cBoard, AIConfiguration conf)
cPlayer
- player corrente di cui interessa la miglior mossacPlayer
- giocatore avversariocBoard
- board correnteconf
- oggetto AIConfiguration contiene la configurazione del modulo AIMethod Detail |
---|
public void InitDebug(boolean status)
status
- attivo = true; disattivo = falsepublic boolean getDebugEnabled()
public cell findBestMove()
public java.lang.String printStats()
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |