Class ValutaMosse

java.lang.Object
  extended by ValutaMosse

public class ValutaMosse
extends java.lang.Object

Questa classe 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.


Field Summary
protected  java.util.Random generatoreCasuale
          Generatore casuale per scegliere tra due mosse con stessa valutazione.
 Gioco gioco
          Il gioco di cui cerco la mossa migliore allo stato attuale.
 Mossa migliorMossa
          La mossa migliore tra tutte quelle valutate finora.
 int migliorValutaz
          La valutazione della mossa migliore tra tutte quelle valutate finora.
protected  Mossa peggiorContromossa
          La contromossa peggiore (migliore per l'avversario) fra tutte le contromosse finora valutate alla mossa memorizzata in migliorMossa.
protected  int peggiorValutaz
          La valutazione della contromossa peggiore (migliore per l'avversario) fra tutte le contromosse finora valutate alla mossa memorizzata in migliorMossa.
protected  int[] pezziMangiati1
          Array che salva i pezzi avversari mangiati nella mossa simulata di questo gicatore.
protected  int[] pezziMangiati2
          Array che salva i pezzi avversari mangiati nella contromossa simulata dell'avversario.
protected  Mossa simulata1
          Mossa simulata di questo giocatore.
protected  Mossa simulata2
          Contromossa avversaria simulata
 
Constructor Summary
ValutaMosse(Gioco g)
          Crea valutatore di mosse per il gioco dato.
 
Method Summary
protected  void disfaSimulazione()
          Disfa la mossa simulata.
protected  boolean eNuovaMigliore(int val)
          Controlla se il valore e' migliore della valutazione di quella che finora e' la mossa migliore, memorizzata in migliorMossa.
protected  boolean eNuovaPeggiore(int val)
          Controlla se il valore e' peggiore della valutazione di quella che finora e' la contromossa peggiore (migliore per l'avversario), memorizzata in peggiorContromossa.
 Mossa mossaMigliore(int colore)
          Calcola e ritorna la mossa valutata migliore per il giocatore del colore assegnato.
protected  void salvaPezzi(int[] array, java.util.LinkedList caselle)
          Salva in un array le posizioni presenti in lista (serve per salvare le caselle mangiate da una mossa).
protected  void simula(Mossa m)
          Simula la mossa sulla scacchiera.
 int valuta(int colore)
          Valuta la situazione attuale della scacchiera dal punto di vista del giocatore di colore assegnato.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

gioco

public Gioco gioco
Il gioco di cui cerco la mossa migliore allo stato attuale.


generatoreCasuale

protected java.util.Random generatoreCasuale
Generatore casuale per scegliere tra due mosse con stessa valutazione.


migliorMossa

public Mossa migliorMossa
La mossa migliore tra tutte quelle valutate finora.


migliorValutaz

public int migliorValutaz
La valutazione della mossa migliore tra tutte quelle valutate finora.


peggiorContromossa

protected Mossa peggiorContromossa
La contromossa peggiore (migliore per l'avversario) fra tutte le contromosse finora valutate alla mossa memorizzata in migliorMossa.


peggiorValutaz

protected int peggiorValutaz
La valutazione della contromossa peggiore (migliore per l'avversario) fra tutte le contromosse finora valutate alla mossa memorizzata in migliorMossa.


simulata1

protected Mossa simulata1
Mossa simulata di questo giocatore.


pezziMangiati1

protected int[] pezziMangiati1
Array che salva i pezzi avversari mangiati nella mossa simulata di questo gicatore.


simulata2

protected Mossa simulata2
Contromossa avversaria simulata


pezziMangiati2

protected int[] pezziMangiati2
Array che salva i pezzi avversari mangiati nella contromossa simulata dell'avversario.

Constructor Detail

ValutaMosse

public ValutaMosse(Gioco g)
Crea valutatore di mosse per il gioco dato.

Parameters:
g - il gioco in cui si vogliono trovare le mosse migliori
Method Detail

salvaPezzi

protected void salvaPezzi(int[] array,
                          java.util.LinkedList caselle)
Salva in un array le posizioni presenti in lista (serve per salvare le caselle mangiate da una mossa).

Parameters:
array - array nel quale salvare le posizioni
caselle - lista che contiene le posizioni da salvare

simula

protected void simula(Mossa m)
Simula la mossa sulla scacchiera. Praticamente esegue la mossa, ma prima salva tutte le informazioni per poterla disfare. Posso simulare al piu' due mosse (quella del giocatore e la contromossa del suo avversario).

Parameters:
la - mossa da simulare

disfaSimulazione

protected void disfaSimulazione()
Disfa la mossa simulata. Posso simulare al piu' due mosse, viene disfatta l'ultima mossa simulata e non ancora disfatta.


valuta

public int valuta(int colore)
Valuta la situazione attuale della scacchiera dal punto di vista del giocatore di colore assegnato. La valutazione dell'avversario e' esattamente simmetrica (stesso valore cambiato di segno).

Parameters:
colore - colore del giocatore di cui si vuole trovare la miglior mossa possibile nello stato attuale

eNuovaMigliore

protected boolean eNuovaMigliore(int val)
Controlla se il valore e' migliore della valutazione di quella che finora e' la mossa migliore, memorizzata in migliorMossa. Se migliorMossa e' null ritorna sempre true. Se la valutazione e' uguale sceglie a caso. val il valore da confrontare con la valutazione attuale della mossa migliore, memorizzata in migliorValutaz


eNuovaPeggiore

protected boolean eNuovaPeggiore(int val)
Controlla se il valore e' peggiore della valutazione di quella che finora e' la contromossa peggiore (migliore per l'avversario), memorizzata in peggiorContromossa. Se peggiorContromossa e' null ritorna sempre true. Se la valutazione e' uguale sceglie a caso. val il valore da confrontare con la valutazione attuale della contromossa meggiore, memorizzata in peggiorValutaz


mossaMigliore

public Mossa mossaMigliore(int colore)
Calcola e ritorna la mossa valutata migliore per il giocatore del colore assegnato.

Parameters:
colore - colore del giocatore di cui si vuole trovare la miglior mossa possibile nello stato attuale