Class Engine

java.lang.Object
  extended by Engine

public class Engine
extends java.lang.Object

Classe Engine per la gestione dell'intelligenza artificiale. Tale classe e' stata realizzata basandosi sulla strategia di MiniMax con alpha-beta pruning e ricerca di quiescenza


Constructor Summary
Engine()
           
 
Method Summary
static int EvalOriginale(int[][] position)
          Funzione di valutazione originale del codice.
static int EvalPrima(int[][] position, int player)
          Funzione di valutazione Prima.
static int EvalSoloPedine(int[][] position)
          Funzione di valutazione che calcola solo il peso associato ad ogni pezzo e valuta la posizione delle pedine.
static int EvalSpettacolo(int[][] position, int player)
          Funzione di valutazione EvalSpettacolo: realizza la teoria secondo la quale, la board viene divisa in quattro quadranti e ognuno ha, rispetto ad un giocatore una certa importanza.
static int Evaluation2(int[][] position)
          Funzione di valutazione Evaluation2: Si comporta come la funzione Prima, ma in questo caso le dame vengono favorite affinche' occupino posizioni centrali della damiera
static int Evaluation2Compl(int[][] position)
          Funzione di valutazione Evaluation2Compl:
static int MiniMax(int[][] board, int depth, int maxDepth, java.util.Vector<int[]> theMove, int player, int[] counter, int BFunction, int WFunction, Board scacchiera)
          Metodo che realizza la ricerca MiniMax con analisi di alpha-beta pruning e ricerca di quiescenza
static int supportoBLACK(int[][] position, int i, int j)
          Metodo ausiliario EvalPrima
static int supportoWHITE(int[][] position, int i, int j)
          Metodo ausiliario EvalPrima
static int valutaPos(int i, int j, int[][] position)
          Metodo ausiliario di Evaluation2Compl.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

Engine

public Engine()
Method Detail

EvalSpettacolo

public static int EvalSpettacolo(int[][] position,
                                 int player)
Funzione di valutazione EvalSpettacolo: realizza la teoria secondo la quale, la board viene divisa in quattro quadranti e ognuno ha, rispetto ad un giocatore una certa importanza.

Parameters:
position - la board di partenza
player - il colore del giocatore del turno
Returns:
ritorna il valore della valutazione della configurazione della board

valutaPos

public static int valutaPos(int i,
                            int j,
                            int[][] position)
Metodo ausiliario di Evaluation2Compl.


Evaluation2Compl

public static int Evaluation2Compl(int[][] position)
Funzione di valutazione Evaluation2Compl:

Parameters:
position - la board di partenza
Returns:
ritorna il valore della valutazione della configurazione della board

Evaluation2

public static int Evaluation2(int[][] position)
Funzione di valutazione Evaluation2: Si comporta come la funzione Prima, ma in questo caso le dame vengono favorite affinche' occupino posizioni centrali della damiera

Parameters:
position - la board di partenza
Returns:
ritorna il valore della valutazione della configurazione della board

supportoBLACK

public static int supportoBLACK(int[][] position,
                                int i,
                                int j)
Metodo ausiliario EvalPrima


supportoWHITE

public static int supportoWHITE(int[][] position,
                                int i,
                                int j)
Metodo ausiliario EvalPrima


EvalPrima

public static int EvalPrima(int[][] position,
                            int player)
Funzione di valutazione Prima. Sfrutta l'idea secondo la quale e' preferibile far avanzare i pezzi sulla damiera tenendoli ben compatti e ben saldati alla base. Per quanto riguarda le dame, le penalizza nel caso si muovano lungo i bordi della damiera.

Parameters:
position - la board virtuale con tutti i pezzi posizionati.
player - il giocatore che deve fare la mossa.
Returns:
ritorna la valutazione della board passata in input

EvalOriginale

public static int EvalOriginale(int[][] position)
Funzione di valutazione originale del codice. Attribuisce ad ogni pezzo un peso e alle pedine il peso in base alla distanza dalla base avversaria. Inoltre vengono penalizzate le dame se stanno sui bordi.

Parameters:
position - la board virtuale con tutti i pezzi posizionati.
Returns:
ritorna la valutazione della board passata in input

EvalSoloPedine

public static int EvalSoloPedine(int[][] position)
Funzione di valutazione che calcola solo il peso associato ad ogni pezzo e valuta la posizione delle pedine.

Parameters:
position - la board di partenza
Returns:
il valore della funzione di valutazione applicata alla configurazione di pedine presente nella board passata * in input.

MiniMax

public static int MiniMax(int[][] board,
                          int depth,
                          int maxDepth,
                          java.util.Vector<int[]> theMove,
                          int player,
                          int[] counter,
                          int BFunction,
                          int WFunction,
                          Board scacchiera)
Metodo che realizza la ricerca MiniMax con analisi di alpha-beta pruning e ricerca di quiescenza

Parameters:
board - la damiera con la configurazione corrente
depth - la profondita' raggiunta all'interno dell'albero
maxDepth - la massima profondita' che si puo' raggiungere nell'albero di ricerca
theMove - la mossa che si vuole eseguire
player - il giocatore che sta giocando
counter -
BFunction - il tipo di funzione di valutazione che e' stata selezionata per il giocatore nero
WFunction - il tipo di funzione di valutazione che e' stata selezionata per il giocatore bianco
scacchiera - un oggetto di tipo board
Returns:
ritorna il valore della funzione di valutazione