MoveScheduler.java
Costruttori della classe
Costruttore
Metodi della classe
add
getMossePossibili
Codice
import java.util.Arrays;
import java.util.Vector;
Indice
/**
* Classe per la gestione delle mosse che si possono eseguire
*/
public class MoveScheduler {
// I) definizione dei campi della classe
Vector[] sequenzePerCattura; // struttura per la memorizzazione delle mosse
// II) costruttore della classe
Indice
/**
* Costruttore a zero argomenti della classe. Inizializza la struttura dati.
*/
public MoveScheduler(){
sequenzePerCattura=new Vector[13]; // 13 = 12 (numero massimo di prese) + la mossa semplice
for(int i=0; i<13; i++)
sequenzePerCattura[i]=new Vector();
}
// III) metodi della classe
// A) metodo che permette di inserire una mossa all'interno della struttura di gestione della mossa
Indice
/**
* Metodo che inserisce una mossa all'interno della struttura di gestione della mossa
* @param mossa coordinate che specificano la mossa
*/
public void add(InfoMossa mossa){
sequenzePerCattura[mossa.getSequenza().length()-3].add(mossa); //-3 perche' la mossa semplice e' identificata da 3 caratteri
}
// B) Metodo che ritorna la lista di tutte e sole le mosse che possono essere eseguite da un utente, rispettando le regole
Indice
/**
* Metodo che analizza tutte le mosse salvate nella struttura e ritorna le mosse possibili
* @return ritorna le mosse possibili
*/
public Vector> getMossePossibili(){
int i; // indice ove memorizzare la posizione di dimensionn maggiore della struttura che non risulta essere vuota
InfoMossa[] tmpLista=new InfoMossa[1];
Vector> mossePossibili = new Vector>();
// si scorre la struttura dati dalla fine, cercando la prima posizione non vuota
for(i=12; i>=0 && sequenzePerCattura[i].size()==0 ; i--);
// se la struttra e' tutta vuota, allora non ci sono mosse possibili da fare e si ritorna il vettore vuoto
if(i==-1){ //non ci sono mosse possibili
return mossePossibili;
}
// altrimenti si salvano le mosse da ritornare
tmpLista=new InfoMossa[sequenzePerCattura[i].size()]; // lista ausiliaria per le mosse
sequenzePerCattura[i].toArray(tmpLista);
Arrays.sort(tmpLista); // si ordinano le mosse
i=1; // ora viene usato come contatore per scorrere la lista di mosse selezionate
mossePossibili.add(tmpLista[0].getMossa()); // si inserisce la prima mossa nel vettore da ritornare
// si scorrono salvano tutte le mosse che hanno etichetta uguale a quella della prima mossa.
// si termina quando o si finiscono le mosse o si trova una mossa con etichetta diversa
while(i
|