Class Gioco

java.lang.Object
  extended by Scacchiera
      extended by Gioco

public class Gioco
extends Scacchiera

Sotto-classe di Scacchiera, aggiunge informazioni e metodi riguardanti il movimento dei pezzi: direzioni possibili di movimento, controllo se una mossa sia possibile, generazione delle mosse possibili ecc.


Field Summary
 int aChiTocca
          Colore del giocatore a cui tocca fare la prossima mossa, inizialmente tocca al bianco.
static int FERMA
          Codifica nessuna direzio
 Mossa mossaInFormazione
          Mossa in preparazione per essere poi eseguita.
 java.lang.String msg
          Messaggio che commenta l'esito dell'ultima chiamata a una delle due funzioni puoAndare.
static int NORD_EST
          Codifica la direzione nord est (riga decresce, colonna cresce)
static int NORD_OVEST
          Codifica la direzione nord ovest (riga decresce, colonna decresce)
static int SUD_EST
          Codifica la direzione sud est (riga cresce, colonna cresce)
static int SUD_OVEST
          Codifica la direzione sud ovest (riga cresce, colonna decresce)
 
Fields inherited from class Scacchiera
BIANCO, contenutoCaselle, DAMA_BIANCA, DAMA_NERA, DIM_LATO, NERO, NON_COLORE, PEDINA_BIANCA, PEDINA_NERA, VUOTA
 
Constructor Summary
Gioco()
          Crea nuovo gioco con scacchiera in situazione iniziale e primo giocatore a cui tocca il bianco.
 
Method Summary
 boolean adiacenteDiretta(Casella c1, Casella c2)
          Ritorna se le due caselle sono direttamente adiacenti, cioe' si toccano per un vertice.
 Casella casellaAdiacente(Casella c, int direz)
          Ritorna la casella adiacente a quella data, secondo la direzione di un punto cardinale.
 int chiHaVinto()
          Se uno dei due giocatori ha vinto, ritorna il colore del vincitore, altrimenti ritorna nessun colore.
 int coloreOpposto(int colore)
          Ritorna il colore opposto a quello dato: bianco per nero e nero per bianco, se il colore non esiste e' il colore della casella vuota), lo ritorna.
 int direzGiacenza(Casella c1, Casella c2)
          Ritorna in che direzione devo andare per muovermi da c2 verso c1.
 void esegui(Mossa m)
          Esegue la mossa assegnata, cambia anche il giocatore a cui tocca.
 boolean eVersoAvanti(Casella c1, Casella c2, int colore)
          Controlla se muovere dalla casella c1 alla casella c2 e' verso avanti, cioe' verso la sponda avversaria della scacchiera, per il giocatore del colore dato.
 boolean eVersoAvanti(int direz, int colore)
          Controlla se la direzione assegnata e' verso avanti, cioe' verso la sponda avversaria della scacchiera, per il giocatore del colore dato.
 Casella mangiataFra(Casella c1, Casella c2)
          Ritorna la casella che si trova intrappolata fra due caselle.
 boolean puoAndare(Mossa m, Casella cas)
          Controlla se il pezzo che si trova sull'ultima casella della mossa m puo' andare nella casella cas, in caso affermativo estende la mossa m.
 boolean puoAndare(Mossa m, int direz)
          Controlla se il pezzo che si trova sull'ultima casella della mossa m puo' andare ancora nella direzione direz, in caso affermativo estende la mossa m.
 java.util.LinkedList suggerisciMosse(Casella cas)
          Restituisce lista di tutte le mosse possibili per il pezzo che si trova nella casella specificata.
protected  void suggerisciMosseRic(Mossa m0, java.util.LinkedList mosse)
          Funzione ausiliaria, ricirsiva, trova le mosse possibili per il pezzo che si trova nella casella specificata, e le aggiunge alla lista.
 
Methods inherited from class Scacchiera
bordoOpposto, colore, contenuto, contenuto, declassataPedina, eDentro, eDentro, eNera, eNera, ePedina, metti, metti, promossaDama, stampaScacchiera, statoIniziale
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

NORD_OVEST

public static final int NORD_OVEST
Codifica la direzione nord ovest (riga decresce, colonna decresce)

See Also:
Constant Field Values

NORD_EST

public static final int NORD_EST
Codifica la direzione nord est (riga decresce, colonna cresce)

See Also:
Constant Field Values

SUD_OVEST

public static final int SUD_OVEST
Codifica la direzione sud ovest (riga cresce, colonna decresce)

See Also:
Constant Field Values

SUD_EST

public static final int SUD_EST
Codifica la direzione sud est (riga cresce, colonna cresce)

See Also:
Constant Field Values

FERMA

public static final int FERMA
Codifica nessuna direzio

See Also:
Constant Field Values

aChiTocca

public int aChiTocca
Colore del giocatore a cui tocca fare la prossima mossa, inizialmente tocca al bianco.


mossaInFormazione

public Mossa mossaInFormazione
Mossa in preparazione per essere poi eseguita.


msg

public java.lang.String msg
Messaggio che commenta l'esito dell'ultima chiamata a una delle due funzioni puoAndare.

Constructor Detail

Gioco

public Gioco()
Crea nuovo gioco con scacchiera in situazione iniziale e primo giocatore a cui tocca il bianco.

Method Detail

eVersoAvanti

public boolean eVersoAvanti(int direz,
                            int colore)
Controlla se la direzione assegnata e' verso avanti, cioe' verso la sponda avversaria della scacchiera, per il giocatore del colore dato.

Parameters:
direz - direzione da controllare se e' verso avanti, deve essere una tra NORD_OVEST, NORD_EST, SUD_OVEST, SUD_EST
colore - colore del pezzo da muovere

eVersoAvanti

public boolean eVersoAvanti(Casella c1,
                            Casella c2,
                            int colore)
Controlla se muovere dalla casella c1 alla casella c2 e' verso avanti, cioe' verso la sponda avversaria della scacchiera, per il giocatore del colore dato.

Parameters:
c1 - casella dove sta ora il pezzo da muovere
c2 - casella nella quale si vuole spostare il pezzo
colore - colore del pezzo da spostare

coloreOpposto

public int coloreOpposto(int colore)
Ritorna il colore opposto a quello dato: bianco per nero e nero per bianco, se il colore non esiste e' il colore della casella vuota), lo ritorna.

Parameters:
colore - colore di cui trovare l'opposto

casellaAdiacente

public Casella casellaAdiacente(Casella c,
                                int direz)
Ritorna la casella adiacente a quella data, secondo la direzione di un punto cardinale.

Parameters:
c - casella di cui trovare l'adiacente
direz - direzione nella quale vogliamo l'adiacente, deve essere una tra NORD_OVEST, NORD_EST, SUD_OVEST, SUD_EST

adiacenteDiretta

public boolean adiacenteDiretta(Casella c1,
                                Casella c2)
Ritorna se le due caselle sono direttamente adiacenti, cioe' si toccano per un vertice.

Parameters:
c1 - una delle due caselle
c2 - l'altra casella

direzGiacenza

public int direzGiacenza(Casella c1,
                         Casella c2)
Ritorna in che direzione devo andare per muovermi da c2 verso c1.

Parameters:
c1 - casella dove sta ora il pezzo da muovere
c2 - casella nella quale si vuole spostare il pezzo

mangiataFra

public Casella mangiataFra(Casella c1,
                           Casella c2)
Ritorna la casella che si trova intrappolata fra due caselle. Le due caselle date devono essere messe in diagonale con un'altra casella nel mezzo, quest'ultima viene ritornata (la pedina presente in essa e' mangiabile da una pedina avversaria che si trovi in una delle due caselle date se l'altra e' libera).

Parameters:
c1 - una delle due caselle
c2 - l'altra casella

puoAndare

public boolean puoAndare(Mossa m,
                         int direz)
Controlla se il pezzo che si trova sull'ultima casella della mossa m puo' andare ancora nella direzione direz, in caso affermativo estende la mossa m.

Parameters:
m - la mossa che provo a estendere
direz - la direzione in cui provo a estenderla, deve essere una tra NORD_OVEST, NORD_EST, SUD_OVEST, SUD_EST

puoAndare

public boolean puoAndare(Mossa m,
                         Casella cas)
Controlla se il pezzo che si trova sull'ultima casella della mossa m puo' andare nella casella cas, in caso affermativo estende la mossa m.

Parameters:
m - la mossa che provo a estendere
cas - la casella in cui provo a estenderla

esegui

public void esegui(Mossa m)
Esegue la mossa assegnata, cambia anche il giocatore a cui tocca. La mossa deve essere valida e deve toccare al giocatore del colore del pezzo presente sulla casella di partenza della mossa.

Parameters:
m - la mossa da eseguire

chiHaVinto

public int chiHaVinto()
Se uno dei due giocatori ha vinto, ritorna il colore del vincitore, altrimenti ritorna nessun colore. Se uno dei due giocatori non ha mosse (eventualmente perche' non ha piu' pezzi in scacchiera) allora il vincitore e' l'altro, altrimenti nessuno ha vinto finora.


suggerisciMosse

public java.util.LinkedList suggerisciMosse(Casella cas)
Restituisce lista di tutte le mosse possibili per il pezzo che si trova nella casella specificata.

Parameters:
cas - la casella di partenza

suggerisciMosseRic

protected void suggerisciMosseRic(Mossa m0,
                                  java.util.LinkedList mosse)
Funzione ausiliaria, ricirsiva, trova le mosse possibili per il pezzo che si trova nella casella specificata, e le aggiunge alla lista.

Parameters:
m0 - la mossa che provo a estendere
mosse - la lista di mosse in cui salvo man mano le mosse massimali (cioe' non ulteriormente estendibili) costruite estendendo la mossa m0 (anche m0 se e' massimale)