Progetto
L'obiettivo del progetto è implementare il gioco "Il cavaliere
del vuoto" in Java. Questo gioco è stato inventato da
Fergus
Duniho. Il gioco è una variante degli scacchi.
La posizione iniziale è la seguente:
Si gioca con due giocatori: il bianco e il rosso. I pezzi sono i
seguenti:
 |
 |
 |
 |
 |
 |
Re |
Torre |
Alfiere |
Cavallo |
Pedone |
Cavaliere |
Ogni giocatore ha quattordici pezzi: un re, due cavalieri, due torri,
due cavalli, due alfieri e cinque pedoni.
Il vincitore del gioco è quello che prende il re
dell'avversario.
Non si può prendere il re a sorpresa. Un giocatore che ha
il proprio re attaccato (scacco!), è obbligato a fare una mossa che
respinga questo attacco:
- muovendo il suo re su una casella dove il re non è piú
attaccato,
- catturando il pezzo che attacca,
- o mettendo un pezzo tra il re e il suo attaccante.
Se il giocatore non può fare nessuna di queste azioni, ha perso
la partita.
Quando un giocatore che non ha il suo re attaccato non può fare
una mossa
senza mettere il suo re sotto attacco, la partita è dichiarata
patta.
Mosse
Sono i bianchi che fanno la prima mossa. Un giocatore fa una sola mossa alla
volta. I bianchi e i rossi alternano le mosse.
La maggior parte delle mosse vengono direttamente dagli scacchi.
La novità in questo gioco è che la scacchiera può essere modificata con delle mosse
di spostamento delle caselle.
Ogni pezzo ha un suo movimento proprio. Un pezzo non può oltrepassare i pezzi avversari nè
scavalcare uno spazio fuori della scacchiera (casella nera). Le uniche eccezioni sono il cavallo
e il cavaliere.
Un pezzo può eliminare un pezzo avversario occupando la sua casella e togliendolo così dalla scacchiera.
Si dice in questo caso che il pezzo avversario è stato catturato.
Un pezzo non può invece occupare una casella già occupata da un altro pezzo dello stesso colore.
Si deve sempre muovere un solo pezzo alla volta, tranne quando si effettua l'arrocco.
Mossa di spostamento di una casella
Ogni pezzo che sia vicino ad uno spazio fuori della scacchiera (una casella nera) ha la
possibilità di spostarsi in questa casella. Questo spostamento può accadere solamente
in modo orizzontale o verticale ma non in diagonale.
Per completare una mossa di spostamento:
- Si crea una nuova casella (una casella nera diviene gialla o verde).
- il pezzo viene ad occupare la nuova casella.
- la casella precedente è rimossa della scacchiera (diviene nera).
Una restrizione è che la casella creata deve essere connessa almeno con un lato del resto
della scacchiera. Questo assicura che il gioco resta nelle dimensioni 7 colonne per 9 righe.
Per esempio, nel diagramma
sottostante:
il pedone può muoversi fuori della scacchiera:
La mossa è corretta perchè la nuova casella a3 è connessa con la scacchiera tramite la casella a2.
Re
Il re si muove di una casella alla volta in una qualsiasi direzione, come disegnato nel diagramma
sottostante:
Il re non può muoversi in una casella sotto attacco.
L'arrocco
Un mossa particolare del re è l'arrocco. Tale mossa coinvolge il re e una delle due torri.
Si può effettuare un arrocco solo una volta in tutta la partita. Le condizioni
per poter effettuare l'arrocco sono le seguenti:
- Il re non deve mai essere stato mosso prima durante la partita;
- La torre coinvolta nell'arrocco non deve essere stata mai spostata prima durante la partita;
- Il re non deve essere sotto attacco;
- Il re durante il movimento dell'arrocco non deve attraversare caselle sotto attacco.
Anche la casella d'arrivo non deve essere sotto attacco;
- Fra il re e la torre non ci devono essere né caselle vuote, né altri pezzi.
L'arrocco si effettua spostando il re di due caselle verso la torre e affiancando il re con la
torre dall'altra parte. Per esempio, nella posizione seguente:
si può effetuare l'arrocco:
Torre
La torre si muove lungo colonne o righe, come disegnato nel diagramma
sottostante:
Alfiere
L'Alfiere si muove lungo le diagonali in linea retta, come disegnato nel diagramma sottostante:
Cavallo
Il cavallo ha un movimento un pò particolare. È l´unico che può saltare pezzi del proprio schieramento e di quello avversario. il cavallo si muove spostandosi di una casella come la torre e poi di una casella come l´alfiere, in modo da fare una specie di movimento ad L, come disegnato nel diagramma sottostante:
Pedone
Il pedone è l'unico pezzo che si muove in un certo modo e per catturare si muove in altra maniera.
Il pedone si muove in avanti di una sola casella. Invece per catturare si muove come l'alfiere, ma solo
di una casella alla volta e sempre avanti. Nel diagramma sottostante il punto blu indica la casella
dove il pedone può muoversi, i due punti indicano le caselle dove il pedone può catturare un pezzo
avversario.
Quando un pedone fa una mossa di spostamento, il pedone non può andare indietro.
Promozione
Quando un pedone raggiunge il fondo della scacchiera, cioè l´ultima riga (la 9 per i bianchi, la
prima per i rossi), il giocatore sceglie in quale pezzo
(torre, alfiere, cavallo, o cavaliere) il pedone viene promosso.
Cavaliere
Il cavaliere si muove come il re, come disegnato nel diagramma sottostante:
La differenza rispetto al re è che il cavaliere non è bloccato dal vuoto. Si sposta
di una casella anche se fra queste due caselle ci sono caselle vuote.
Per esempio, nella posizione seguente:
il cavaliere può scavalcare le caselle c1, d1 e e1 e muoversi in f1.
Nello stesso modo quando un cavaliere fa una mossa di spostamento, può spostare piú di un
vuoto ma la casella creata deve comunque essere connessa con la scacchiera per almeno un
lato.
Per esempio, nella posizione seguente:
il cavaliere può passare e atterrare nella casella vuota d1:
Progetto
Un primo obiettivo del progetto è di avere un'implementazione
del gioco in Java che convalida le mosse dei due giocatori
e indica alla fine quale dei due ha vinto o se il gioco
è finito in parità. Questa parte del progetto dovrà essere
consegnata prima di fare lo scritto.
A partire da questa base, l'implementazione può essere
completata
realizzando per esempio:
- Un'interfaccia grafica (forse un applet) con cui si può
visualizzare la scacchiera e giocare utilizzando il mouse
- Un programma che gioca il ruolo dell'avversario
- Un server di giochi che permetta a diversi giocatori di
connettersi
per giocare fra di loro
- Un programma che permette di definire delle varianti degli scacchi
e dove questo gioco è solamente un'instanza.
- ...
Netbeans
Se si utilizza netbeans per
sviluppare il progetto:
Per avere le parentesi {} sotto netbeans con la tastiera italiana,
fare unzip di patch-kb.zip
sotto ~/.netbeans/X.X/system (Linux) o C:\Documents and
Settings\NOME\.netbeans\X.X\system (Window) dove X.X è il
numero della versione di netbeans istallata e NOME il nome utente.
Questo dovrebbe creare una sotto directory Editors sotto system.
Adesso rieseguendo netbeans, i tasti F11 e F12
dovrebbero permettere di avere le parentesi.
Per verificare la conformità del progetto, si può
usare nbcheckstyle.
Vedere la sessione Installation per l'istallazione.
Laurent Théry
Last modified: Sat Jan 24 03:56:12 MET 2004