scacchi.soluzione
Class PartitaScacchi

java.lang.Object
  |
  +--scacchi.soluzione.PartitaScacchi
All Implemented Interfaces:
Partita

public class PartitaScacchi
extends java.lang.Object
implements Partita

Implementazione della interfaccia Partita che implementa le regole del gioco degli scacchi.


Field Summary
 
Fields inherited from interface scacchi.main.Partita
BIANCO, NERO
 
Constructor Summary
PartitaScacchi()
          Crea una nuova partita che comincia dalla posizione iniziale del gioco.
PartitaScacchi(int n, ArgomentiComando.ListaPosPezziTesto l)
          Crea una nuova partita che comincia da una posizione data.
 
Method Summary
 ArgomentiComando.ListaPosPezziTesto casaControllataDa(ArgomentiComando.CasaTesto c, boolean colore)
          Elenca i pezzi di un colore che controllano una casa
 ArgomentiComando.ListaCaseTesto caseControllate()
          Restituisce l'elenco delle case controllate dal giocatore che ha il tratto.
 ArgomentiComando.ListaCaseTesto caseControllate(ArgomentiComando.CasaTesto c)
          Restituisce l'elenco delle case controllate da un pezzo.
 ArgomentiComando.ListaCaseTesto caseControllate(boolean colore)
          Restituisce l'elenco delle case controllate dai pezzi di un giocatore.
 ArgomentiComando.ListaPosPezziTesto eseguiMossa(ArgomentiComando.MossaTesto m)
          Esegue una mossa
 ArgomentiComando.ListaMosseTesto getMossePossibili()
          Restituisce l'elenco delle mosse possibili per il giocatore a cui sta la mossa.
 ArgomentiComando.ListaCaseTesto getMossePossibili(ArgomentiComando.CasaTesto c)
          Restituisce l'elenco delle mosse possibili di un pezzo del giocatore che ha la mossa.
 ArgomentiComando.ListaMosseTesto getMosseValide()
          Restituisce l'elenco delle mosse valide per il giocatore che deve muovere.
 ArgomentiComando.ListaMosseTesto getMosseValide(ArgomentiComando.CasaTesto c)
          Restituisce l'elenco delle mosse valide di un pezzo del giocatore che deve muovere.
 int getNumMossa()
          Restituisce il numero di mossa corrente.
 ArgomentiComando.ListaPosPezziTesto getPosizionePezzi()
          Restituisce la posizione dei pezzi
 ArgomentiComando.ListaMosseTesto listaMosse()
          Elenca le mosse della partita
 ArgomentiComando.ListaMosseTesto listaMosse(int n)
          Elenca le ultime semi-mosse della partita
 boolean scaccoAlRe()
          Verifica se il re del giocatore che ha il tratto è sotto scacco.
 ArgomentiComando.ListaPosPezziTesto tornaIndietro()
          Torna indietro di una (semi-)mossa
 ArgomentiComando.ListaPosPezziTesto tornaIndietro(int n)
          Torna indietro di un certo numero di semi-mosse o tratti
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

PartitaScacchi

public PartitaScacchi()
Crea una nuova partita che comincia dalla posizione iniziale del gioco.


PartitaScacchi

public PartitaScacchi(int n,
                      ArgomentiComando.ListaPosPezziTesto l)
               throws EccezioniPartita.PosizioneInizialeException
Crea una nuova partita che comincia da una posizione data.

Parameters:
n - Il numero di mossa da cui comincia la partita. Se positivo il tratto è al BIANCO, se negativo al NERO.
l - La lista delle posizioni dei pezzi che descrive la posizione di inizio della partita.
Throws:
EccezioniPartita.PosizioneInizialeException - Se la posizione di partenza non verifica le seguenti condizioni:
  1. nella posizione ci sono un (solo) Re BIANCO ed un (solo) Re NERO
  2. il Re del giocatore che non ha il tratto non è sotto scacco
  3. la pozione non contiene pedoni (di alcun colore) nella prima ed ottava traversa
Method Detail

getNumMossa

public int getNumMossa()
Description copied from interface: Partita
Restituisce il numero di mossa corrente.
Le mosse vanno contate tenendo conto che una mossa completa si compone di una (semi-)mossa del bianco e di una (semi-)mossa del nero.

Specified by:
getNumMossa in interface Partita
Returns:
Il numero della mossa. Un valore positivo del indica che la mossa sta al BIANCO, un valore negativo che la mossa sta al NERO

eseguiMossa

public ArgomentiComando.ListaPosPezziTesto eseguiMossa(ArgomentiComando.MossaTesto m)
                                                throws EccezioniPartita.MossaException
Description copied from interface: Partita
Esegue una mossa

Specified by:
eseguiMossa in interface Partita
Parameters:
m - la mossa da giocare
EccezioniPartita.MossaException

tornaIndietro

public ArgomentiComando.ListaPosPezziTesto tornaIndietro()
                                                  throws EccezioniPartita.NoMoreMosseException
Description copied from interface: Partita
Torna indietro di una (semi-)mossa

Specified by:
tornaIndietro in interface Partita
Returns:
la nuova posizione dopo che si è tornati indietro
Throws:
EccezioniPartita.NoMoreMosseException - Se la partita è ancors nella posizione iniziale

tornaIndietro

public ArgomentiComando.ListaPosPezziTesto tornaIndietro(int n)
                                                  throws EccezioniPartita.NoMoreMosseException
Description copied from interface: Partita
Torna indietro di un certo numero di semi-mosse o tratti

Specified by:
tornaIndietro in interface Partita
Returns:
la nuova posizione dopo che si è tornati indietro
Throws:
EccezioniPartita.NoMoreMosseException - Se si cerca di tornare indietro oltre la posizione iniziale

listaMosse

public ArgomentiComando.ListaMosseTesto listaMosse()
Description copied from interface: Partita
Elenca le mosse della partita

Specified by:
listaMosse in interface Partita
Returns:
la sequenza delle mosse

listaMosse

public ArgomentiComando.ListaMosseTesto listaMosse(int n)
                                            throws EccezioniPartita.NoMoreMosseException
Description copied from interface: Partita
Elenca le ultime semi-mosse della partita

Specified by:
listaMosse in interface Partita
Parameters:
n - Le semi-mosse da elencare (una semi-mossa è la parte di mossa di uno dei due giocatori)
Returns:
La sequenza delle ultime semi-mosse giocate
Throws:
EccezioniPartita.NoMoreMosseException - Se sono state giocate meno di n semi-mosse

getPosizionePezzi

public ArgomentiComando.ListaPosPezziTesto getPosizionePezzi()
Description copied from interface: Partita
Restituisce la posizione dei pezzi

Specified by:
getPosizionePezzi in interface Partita

caseControllate

public ArgomentiComando.ListaCaseTesto caseControllate(ArgomentiComando.CasaTesto c)
                                                throws EccezioniPartita.CasaVuotaException
Description copied from interface: Partita
Restituisce l'elenco delle case controllate da un pezzo.
Una casa è controllata da un pezzo se il pezzo può arrivarci in base alle sue regole di movimento e se la cosa è vuota o è occupata da un pezzo avversario.
Le case controllate da un pezzo non corrispondono necessariamente alle mosse possibili del pezzo. Un pedone, può muovere nella casa immediatamente di fronte alla sua posizione corrente ma non la controlla, visto che non può catturarci alcun pezzo. Analogamente, un pedone cotrolla le case in cui può effettuare una cattura, ma non può in tali case se sono vuote. non possono essere eseguite perchè il re è sotto scacco

Specified by:
caseControllate in interface Partita
Parameters:
c - casa del pezzo da muovere
Throws:
EccezioniPartita.CasaVuotaException - Nel caso in cui la casa s è vuota

caseControllate

public ArgomentiComando.ListaCaseTesto caseControllate(boolean colore)
Description copied from interface: Partita
Restituisce l'elenco delle case controllate dai pezzi di un giocatore.

Specified by:
caseControllate in interface Partita
Parameters:
colore - Il colore del giocatore da analizzare
See Also:
Partita.caseControllate(ArgomentiComando.CasaTesto)

caseControllate

public ArgomentiComando.ListaCaseTesto caseControllate()
Description copied from interface: Partita
Restituisce l'elenco delle case controllate dal giocatore che ha il tratto.

Specified by:
caseControllate in interface Partita
See Also:
Partita.caseControllate(ArgomentiComando.CasaTesto)

casaControllataDa

public ArgomentiComando.ListaPosPezziTesto casaControllataDa(ArgomentiComando.CasaTesto c,
                                                             boolean colore)
Description copied from interface: Partita
Elenca i pezzi di un colore che controllano una casa

Specified by:
casaControllataDa in interface Partita
Parameters:
c - La casa che si vuole analizzare
colore - Il colore dei pezzi da considerare
Returns:
La lista delle posizioni dei pezzi che controllano la casa.
See Also:
Partita.caseControllate(ArgomentiComando.CasaTesto), Partita.caseControllate(boolean)

getMossePossibili

public ArgomentiComando.ListaCaseTesto getMossePossibili(ArgomentiComando.CasaTesto c)
Description copied from interface: Partita
Restituisce l'elenco delle mosse possibili di un pezzo del giocatore che ha la mossa.
Questo metodo non tiene conto di un eventuale scacco al re elenca cioè tutti i possibili movimenti di pezzi, anche quelli che non eliminano la situazione di scacco.
Il metodo Partita.getMosseValide(ArgomentiComando.CasaTesto) ritorna invece l'elenco delle sole mosse valide e quindi realmente eseguibili.

Specified by:
getMossePossibili in interface Partita
Parameters:
c - La casa del pezzo da muovere
See Also:
Partita.getMossePossibili(), Partita.getMosseValide(), Partita.getMosseValide(ArgomentiComando.CasaTesto)

getMossePossibili

public ArgomentiComando.ListaMosseTesto getMossePossibili()
Description copied from interface: Partita
Restituisce l'elenco delle mosse possibili per il giocatore a cui sta la mossa.

Specified by:
getMossePossibili in interface Partita
See Also:
Partita.getMossePossibili(ArgomentiComando.CasaTesto), Partita.getMosseValide(), Partita.getMosseValide(ArgomentiComando.CasaTesto)

getMosseValide

public ArgomentiComando.ListaMosseTesto getMosseValide(ArgomentiComando.CasaTesto c)
Description copied from interface: Partita
Restituisce l'elenco delle mosse valide di un pezzo del giocatore che deve muovere.
Ritorna solo le mosse che non lasciano o mettono il re sotto scacco.
Il metodo Partita.getMossePossibili(ArgomentiComando.CasaTesto) ritorna invece l'elenco delle mosse possibili.

Specified by:
getMosseValide in interface Partita
Parameters:
c - La casa del pezzo da muovere
See Also:
Partita.getMosseValide(), Partita.getMossePossibili(), Partita.getMossePossibili(ArgomentiComando.CasaTesto)

getMosseValide

public ArgomentiComando.ListaMosseTesto getMosseValide()
Description copied from interface: Partita
Restituisce l'elenco delle mosse valide per il giocatore che deve muovere.
Ritorna solo le mosse che non lasciano o mettono il re sotto scacco.
Se non ci sono mosse possibili allora si ha una situazione di scacco matto, se il re era sotto scacco, o di stallo, se non lo era.

Specified by:
getMosseValide in interface Partita
See Also:
Partita.getMosseValide(ArgomentiComando.CasaTesto), Partita.getMossePossibili(), Partita.getMossePossibili(ArgomentiComando.CasaTesto)

scaccoAlRe

public boolean scaccoAlRe()
Description copied from interface: Partita
Verifica se il re del giocatore che ha il tratto è sotto scacco.

Specified by:
scaccoAlRe in interface Partita
Returns:
true se il re è sotto scacco, false altrimenti.